背景:
系統交易量與日俱增。目前負責系統,數據庫單表存放的數據量越來越大,目前已是百萬級。查詢速度變慢,所以在思考,與同事交流,網上找相應問題需要注意的風險,以及後續解決方案。
- 千萬級數據庫查詢需要注意什麼
- 建立索引(where,order by)
- 避免在where字句中,進行null值判斷,導致引擎放棄使用索引,進行全表掃描
- 索引提高了查詢效率,但是降低了insert和update效率,所以不是越多越好
- 數字,不要涉及爲字符型,會降低查詢連接性能。比較字符串,需要比較每一個,數字只需要比較一次
- 頻繁和刪除臨時表,會增加系統表資源的消耗
- 如果使用了臨時表,最後先顯示存儲,先truncate table 再 drop table
- != 和<>,or,以及在where 後面使用表達式,使用參數,都會導致全表掃描
原文鏈接: https://www.cnblogs.com/peke/p/8036172.html
- 千萬級數據解決方案
- 將歷史數據進行遷移。如果系統運行穩定,在固定時間內做歷史數據遷移,我認爲是一個挺有效的解決方案
2.分表方案:
1)一是根據自增主鍵進行哈希取模,將數據均分到n張表中;該方案最簡單,且最合適,拆分後數據分佈均勻。
2)二是無自增主鍵,選取的分表id由特定的方式生成,則需先確定分表id生成邏輯,根據該邏輯確定取模計算的邏輯,以保證數據均分。
原文鏈接:https://blog.csdn.net/Daybreak1209/article/details/79858080
https://blog.csdn.net/happyduoduo1/article/details/51830361/