08.29 MySQL如何處理億級數據,三個階段的思路,MySQL的分區、分表

第一階段:

語句上的優化,詳見文章

1,一定要正確設計索引

2,語句避免SQL語句全表掃描

3,儘量避免 limit 10000000,20 這樣的查詢

4、儘量避免無意義的查詢語句以及字段

第二階段:

1,採用mysql分區技術

a):橫向分區:

b):縱向分區:

range 分區,list分區,hash分區, key分區。特別按時間產生的數據特別適合用RANGE分區。

刪除歷史字段也特別快

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

a)垂直分表:將部分字段分離出來,設計成分表,根據主表的主鍵關聯

b)水平分表:將相同字段表中的記錄按照某種Hash算法進行拆分多個分表

也可以採用一些中間件來搭建數據庫,如前面說到的mycat。

目前做到的產品一個爬取微博微信數據的平臺。每天爬取並且命中敏感詞 關鍵產生文章的數據大概在110萬左右。用到了11臺機子部署數據庫,用mycat部署的。目前2億沒有壓力

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

1,採用redis,等nosql分擔壓力,memcached之類的內存對象緩存系統,減少數據庫讀取操作

2,採用主從數據庫設計,分離數據庫的讀寫壓力

3,採用Squid之類的代理服務器和Web緩存服務器技術


分享到:


相關文章: