首先要確定你的目標(biāo),所謂千萬(wàn)級(jí)是每秒千萬(wàn)次查詢還是千萬(wàn)條記錄的數(shù)據(jù)庫(kù),前者是一個(gè)極其復(fù)雜的,這個(gè)不是光告mysql能解決的,我想不是前者,而后者卻是很簡(jiǎn)單的一件事,前提是定義高效,定義兩個(gè)指標(biāo):
1,每秒查詢的次數(shù)是多少
2,每次查詢時(shí)長(zhǎng)
確定好以后再考慮以下幾個(gè)因素的優(yōu)化
1,存儲(chǔ)的類(lèi)型,SSD比普通磁盤(pán)的隨機(jī)讀寫(xiě)能力可以提高不少,一般2到3個(gè)數(shù)量級(jí),還要看索引和數(shù)據(jù)塊的大小,比較復(fù)雜
2,先擇RAID類(lèi)型,如果選raid 0和raid10可以提升近似1倍的速度
3,使用高帶寬的網(wǎng)速,可以減少網(wǎng)絡(luò)傳輸延遲,用10g的光纖比1g的電纜理論上可以提升1個(gè)數(shù)量級(jí)的吞吐量,尤其對(duì)大數(shù)據(jù)據(jù)量的結(jié)果集特別有效
4,合理的索引,帶條件的檢索字段加上索引
5,用大寬表,盡可能減少多表關(guān)聯(lián)查詢,用空間換時(shí)間吧
6,釆用主從的集群,基本上查詢的并發(fā)量和服務(wù)器的數(shù)量成正比的
7,使用緩存,如memcached,尤其對(duì)靜態(tài)數(shù)據(jù)提升尤其明顯
8,合理選擇數(shù)據(jù)庫(kù)字段的類(lèi)型,用定長(zhǎng)字字,不要用變長(zhǎng)的,如定長(zhǎng)的int,char,decimal類(lèi)型,別用varchar,text等
9,給數(shù)據(jù)庫(kù)配置更大的內(nèi)存
10,檢查下瓶頸在不在CPU,如果查詢復(fù)雜,換個(gè)更高配置的服務(wù)器
總的原剛就是,盡可能用內(nèi)存替代碰盤(pán)提升IO速度,提高網(wǎng)絡(luò)和CPU的配置以減少查詢時(shí)間;盡可能提升網(wǎng)絡(luò)速度,內(nèi)存和主機(jī)的數(shù)量以提高并發(fā)