大表優化小結

2021-10-11 01:27:19 字數 852 閱讀 3394

大表通常是指表資料達到一定程度,使增刪查改的效能嚴重下滑的情況。優化思路:先從索引和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 總結 ...