收集下关系数据库处理亿万级别的数据
生活随笔
收集整理的這篇文章主要介紹了
收集下关系数据库处理亿万级别的数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一階段:
1,一定要正確設(shè)計索引
2,一定要避免SQL語句全表掃描,所以SQL一定要走索引(如:一切的 > < != 等等之類的寫法都會導(dǎo)致全表掃描)
3,一定要避免 limit 10000000,20 這樣的查詢
4,一定要避免 LEFT JOIN 之類的查詢,不把這樣的邏輯處理交給數(shù)據(jù)庫
5,每個表索引不要建太多,大數(shù)據(jù)時會增加數(shù)據(jù)庫的寫入壓力第二階段:1,采用分表技術(shù)(大表分小表)a)垂直分表:將部分字段分離出來,設(shè)計成分表,根據(jù)主表的主鍵關(guān)聯(lián)
b)水平分表:將相同字段表中的記錄按照某種Hash算法進行拆分多個分表2,采用mysql分區(qū)技術(shù)(必須5.1版以上,此技術(shù)完全能夠?qū)筄racle),與水平分表有點類似,但是它是在邏輯層進行的水平分表第三階段(服務(wù)器方面):1,采用memcached之類的內(nèi)存對象緩存系統(tǒng),減少數(shù)據(jù)庫讀取操作
2,采用主從數(shù)據(jù)庫設(shè)計,分離數(shù)據(jù)庫的讀寫壓力
3,采用Squid之類的代理服務(wù)器和Web緩存服務(wù)器技術(shù)
PS:由于篇幅問題,我只簡單說一些基本概念,其實里面每個知識點關(guān)系到的內(nèi)容都很多。特別是第一階段,很多工作幾年的程序員,都不能完全理解。我覺得要真正理解索引,最好的辦法就是在1000W-億級以上的數(shù)據(jù),進行測試SQL語句,再結(jié)合 explain 命令進行查看SQL語句索引情況
----------------------------------------------------------------------------------------------------------------------------------
去掉表的所有索引 用批量進行插入 分表或者分區(qū),減少每個表的數(shù)據(jù)總量 在某個表完全寫完之后再建立索引 正確的指定索引字段 把需要用到的字段放到包含索引中(在返回的索引中就包含了一切) 查詢的時候只返回所需的字段
總結(jié)
以上是生活随笔為你收集整理的收集下关系数据库处理亿万级别的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL性能分析及explain的使用
- 下一篇: 使用Hibernate生成数据库和连接数