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