大表通常是指表資料達到一定程度,使增刪查改的效能嚴重下滑的情況。優化思路:先從索引和sql優化入手,輔以加快取、讀寫分離。接著再考慮進行分庫分表,分庫分表作為靠後的手段進行考慮。最後才是硬體優化。
1.索引優化
1.1 常用於查詢條件的
1.2 優先選用唯一索引
1.3 使用短欄位作為索引字段
1.4 字元字段盡量不做主鍵
1.5 盡量不用外來鍵,程式保證
2.慢sql優化
2.1.檢視執行計畫 explain
2.2.如果有告警資訊,檢視告警資訊 show warnings;
2.3.檢視sql涉及的表結構和索引資訊
2.4.根據執行計畫,思考可能的優化點
2.5.按照可能的優化點執行表結構變更、增加索引、sql改寫等操作
2.6.檢視優化後的執行時間和執行計畫
2.7.如果優化效果不明顯,重複第四步操作
3.增加快取
3.1瀏覽器或客戶端
3.2應用層(redis)
3.3資料庫訪問層 sql語句快取,查詢記錄快取
4.分庫分表
4.1水平拆分
保持資料表結構不變,按照分片策略儲存資料。比如:訂單表按照時間拆分為多個訂單表,避免單一表資料過大。
優點:可以支援超大的資料量,**邏輯改動小;
缺點:帶來分片事務,跨節點join,邏輯複雜等問題。
4.2垂直拆分
根據表字段的相關性對資料表進行拆分。
優點:使字段數變少,簡化表結構。
MySQL大表優化方案
cubrid 但其工業品質和mysql尚有差距,且需要較大的運維投入,如果想將原始的mysql遷移到可水平擴充套件的新資料庫中,可以考慮一些雲資料庫 阿里雲petadata 阿里雲oceanbase nosql 在mysql上做sharding是一種戴著鐐銬的跳舞,事實上很多大表本身對mysql這種...
MySQL大表優化方案
阿里雲rds for mysql mysql5.7版本 資料庫業務表每月新增資料量超過千萬,隨著資料量持續增加,我們業務出現大表慢查詢,在業務高峰期主業務表的慢查詢需要幾十秒嚴重影響業務 mysql資料庫本身高度靈活,造成效能不足,嚴重依賴開發人員的表設計能力以及索引優化能力,在這裡給幾點優化建議 ...
mysql 大表優化 持續更新
單錶優化 除非單錶資料未來會一直不斷 否則不要一開始就考慮拆分,拆分會帶來邏輯 部署 運維的各種複雜度,一般以整型值為主的表在千萬級以下,字串為主的表在五百萬以下是沒有太大問題的。而事實上很多時候mysql單錶的效能依然有不少優化空間,甚至能正常支撐千萬級以上的資料量 字段 索引 查詢sql 總結 ...