第一階段:
語句上的優化,詳見文章
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緩存服務器技術
閱讀更多 我是大陳老師 的文章