mysql 存儲及查詢億級數據

第一階段:
1,一定要正確設計索引
2,一定要避免SQL語句全表掃描,所以SQL一定要走索引(如:一切的 > < != 等等之類的寫法都會導致全表掃描)
3,一定要避免 limit 10000000,20 這樣的查詢
4,一定要避免 LEFT JOIN 之類的查詢,不把這樣的邏輯處理交給數據庫
5,每個表索引不要建太多,大數據時會增加數據庫的寫入壓力

第二階段:

1,採用分表技術(大表分小表)

a)垂直分表:將部分字段分離出來,設計成分表,根據主表的主鍵關聯
b)水平分表:將相同字段表中的記錄按照某種Hash算法進行拆分多個分表

2,採用mysql分區技術(必須5.1版以上,此技術完全能夠對抗Oracle),與水平分表有點類似,但是它是在邏輯層進行的水平分表

第三階段(服務器方面):

1,採用memcached之類的內存對象緩存系統,減少數據庫讀取操作
2,採用主從數據庫設計,分離數據庫的讀寫壓力
3,採用Squid之類的代理服務器和Web緩存服務器技術

PS:由於篇幅問題,我只簡單說一些基本概念,其實裏面每個知識點關係到的內容都很多。特別是第一階段,很多工作幾年的程序員,都不能完全理解。我覺得要真正理解索引,最好的辦法就是在1000W-億級以上的數據,進行測試SQL語句,再結合 explain 命令進行查看SQL語句索引情況。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章