偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

兩種優(yōu)化策略對比:MySQL VS 緩存

運維 系統(tǒng)運維
本文中對Greenfield項目上的兩種優(yōu)化策略進行對比,優(yōu)化MySQL和優(yōu)化緩存,孰優(yōu)孰劣?一般情況下,先對MySQL進行優(yōu)化是開始階段最合適的解決方案。

今天我想對一個Greenfield項目上可以采用的各種性能優(yōu)化策略作個對比。換言之,該項目沒有之前決策強加給它的各種約束限制,也還沒有被優(yōu)化過。

具體來說,我想比較的兩種優(yōu)化策略是優(yōu)化MySQL和緩存。提前指出,這些優(yōu)化是正交的,***讓你選擇其中一者而不是另一者的原因是他們都耗費了資源,即開發(fā)時間。

優(yōu)化MySQL

優(yōu)化MySQL時,一般會先查看發(fā)送給Mysql的查詢語句,然后運行explain命令。稍加審查后很常見的做法是增加索引或者對模式做一些調(diào)整。

優(yōu)點

1、一個經(jīng)過優(yōu)化的查詢對于所有使用應用的用戶來說都是快速的。因為索引通過對數(shù)復雜度的速度來檢索數(shù)據(jù)(又名分制,正如你搜索一個電話簿一樣,逐步縮小搜索范圍),而且隨著數(shù)據(jù)量的遞增也能維持良好的性能。對一個未經(jīng)索引化的查詢的結果做緩存隨著數(shù)據(jù)的增長有時候則可能會表現(xiàn)得更差。隨著數(shù)據(jù)的增長,那些未命中緩存的用戶可能會得到很糟糕的體驗,這樣的應用是不可用的。

2、優(yōu)化MySQL不需要擔心緩存失效或者緩存數(shù)據(jù)過期的問題。

3、優(yōu)化MySQL可以簡化技術架構,在開發(fā)環(huán)境下復制和工作會更加容易。

缺點

1、有一些查詢不能光通過索引得到性能上的改善,可能還需要改變模式,在某些情況下這對于一些應用可能會很麻煩。

2、有些模式的更改可能用于反規(guī)范化(數(shù)據(jù)備份)。盡管對于DBA來說,這是一項常用的技術,它需要所有權以確保所有的地方都是由應用程序更新,或需要安裝觸發(fā)器來保證這種變化。

3、一些優(yōu)化手段可能是MySQL所特有的。也就是說,如果底層軟件被移植到多個數(shù)據(jù)庫上工作,那么很難確保除了增加索引外一些更復雜的優(yōu)化技術可以通用。

使用緩存

這種優(yōu)化需要人來分析應用的實際情況,然后將處理代價昂貴的部分從MySQL中剝離出來用第三方緩存替代,比如memcached或Redis。

優(yōu)點

1、緩存對于一些MySql自身很難優(yōu)化的查詢來說會工作地很好,比如大規(guī)模的聚合或者分組的查詢。

2、緩存對于提高系統(tǒng)的吞吐率來說可能是個不錯的方案。比如對于多人同時訪問應用時響應速度很慢的情況。

3、緩存可能更容易構建在另一個應用之上。比如:你的應用可能是另一個用MySQL存儲數(shù)據(jù)的軟件包的前端,而要對這個軟件包做任何數(shù)據(jù)庫方面的改動都非常難。

缺點

1、如果數(shù)據(jù)對外提供多種存取范式(例如,在不同的頁面上用不同的形式展示),那么讓緩存過期或者更新可能會很難,同時/或者可能需要容忍已過期的數(shù)據(jù)。一個可行的替代方案是設計一套更加精細的緩存機制,當然它也有缺點,即多次獲取緩存會增加時延。

2、緩存一個產(chǎn)生代價昂貴的對象對于那些未命中緩存的用戶(見優(yōu)化MySQL的優(yōu)勢#1)而言可能會產(chǎn)生潛在的性能差異。一些好的性能實踐表明你應該盡量縮小用戶之間的差異性,而不僅僅是平均化(緩存傾向于這么做)。

3、幼稚的緩存實現(xiàn)無力應對一些微妙的漏洞,比如雪崩效應。就在上周我?guī)椭艘粋€人,他的數(shù)據(jù)庫服務器被多個試圖同時再生同樣緩存內(nèi)容的用戶請求沖垮。正確的策略是引入一定級別的鎖來將緩存再生的請求序列化。

總結

一般情況下,我會建議用戶先對MySQL進行優(yōu)化,因為這是我認為開始階段最合適的解決方案。但長期來看,大部分應用都會有一些用例需要一定程度上同時實現(xiàn)以上這些方案。

責任編輯:黃丹 來源: 伯樂在線
相關推薦

2010-02-24 14:25:48

WCF地址

2010-08-31 08:52:40

2010-10-11 10:31:51

MySQL分區(qū)

2009-12-14 15:34:54

動態(tài)路由協(xié)議

2010-03-15 14:01:26

JavaScript

2009-12-17 13:45:58

VS 2008外殼

2020-05-11 13:03:03

SR-TEIP路由器

2010-09-28 15:12:27

Javascript

2019-01-11 13:57:06

2009-10-30 11:30:38

2024-01-09 09:09:45

RESTGraphQL

2012-08-28 09:32:08

虛擬化

2011-03-02 10:24:12

終端虛擬化

2024-10-14 08:35:29

2011-10-24 09:36:09

桌面虛擬化虛擬化

2022-11-14 10:58:29

2010-09-29 10:10:06

J2ME代碼優(yōu)化

2010-10-14 14:33:15

MySQL多表聯(lián)查

2011-03-03 10:26:04

Pureftpd

2011-05-30 09:27:44

點贊
收藏

51CTO技術棧公眾號