1. 程式人生 > >mysql 儲存及查詢億級資料

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