MySQL大表優化思路【面試系列】

其實就是把別的文章腦圖抄一下,順便自己動動腦子消化一下,平時工作中比較好用


大表
數據量:千萬
可能達到億或更高
是一個相對穩定的數據量
不應該有這麼多數據
對象:數據表
狀態表
OLTP業務方向
流水錶
OLTP:業務拆分,分佈式存儲的角度進行設計
OLAP:設計數據統計需求和存儲的分不熟擴展
配置表
通用服務,配置應該是小而簡,避免大
目標:優化
規範化
業務層優化
業務拆分
混合業務拆分成獨立業務
將狀態和歷史數據分離
數據拆分
按時間拆分
按照日期維度拆分,20190101
按照周月維度拆分,201901
按照季度維度拆分
採用分區模式
採用hash,range等方式
讀多寫少優化場景
緩存:redis
讀少寫多優化場景
異步提交
隊列技術
降低寫入頻率
架構層優化
系統水平擴展場景
採用中間件,mycat\shardingSphere...
讀寫分離技術
採用負載均衡技術
LVS
域名解析
兼顧OLTP+OLAP業務場景
NewSQL體系
Tidb
離線統計的業務場景
NoSQL
適合兼容mysql協議的數據倉庫體系:inforbright/ColumnStore
基於列式存儲,屬於異構方向,如HBase
數倉
基於MPP架構,如使用Greenplum統計T+1統計
數據庫優化
事務優化
根據業務場景選擇事務原型,是否是強事務依賴
事務降爲策略
存儲過程轉化爲透明的SQL
DDL操作轉換爲DML操作
Delete操作轉換爲高效操作
rename操作
根據時間分表
SQL優化
SQL語句簡化
儘量避免複雜查詢
SQL中儘可能避免發連接:not in,not exists反連接
SQL中間可能避免半連接:in,exists半連接
索引優化
必須有pk
SQL查詢基於索引或者唯一性索引
儘可能杜絕範圍數據查詢
管理優化
數據清理如何做
冷熱數據分離
數據變更如何做
在線變更使用pt-ost等工具
儘可能變數據碎片

參考連接
如何優化MySQL千萬級大表,我寫了6000字的解讀

發佈了18 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章