MySQL千萬級資料表優化思路

2022-08-29 23:03:26 字數 804 閱讀 1980

本文參考知乎問答整理:

喜歡這樣的論調:

mysql只做簡單的事情,千萬級的表,無論怎樣優化,同樣的sql,都沒有在十萬級的表中執行效率快;

因此,在設計千萬級的大表之前,要先問自己幾個問題

我們當然希望每個應用都可以這樣,但理想終歸是理想,現實中,輪到我們自己擼袖子上陣的時候,坑,大多已經是一眼忘不到底兒了...

優化你的sql和索引;

加快取,memcached、redis;

做主從複製或主主複製,讀寫分離;可以在應用層做,效率高,也可以使用第三方工具,第三方工具推薦qihoo 360的atlas,其它的要麼效率不高,要麼沒人維護;

考慮使用mysql的分割槽表,分割槽表對應用是透明的,無需修改**,但是sql語句是需要針對分割槽表做優化的,需要在sql條件中帶上分割槽條件的列,以使查詢定位到少量的分割槽中,否則就會掃瞄全部分割槽;另外分割槽表還有一些坑,這裡就不多說了;

考慮對錶做垂直拆分,意思就是根據你應用模組的耦合度,將大的模組拆分為小的模組進行處理,即傳說中的「分布式應用」;ps:對某些業務而言,有些資料,用一次之後,再用到的可能性幾乎為零,這時候,完全可以將這些資料規整到一張表中做為歷史資料存放;

以上手段,都達到了無法再優化的時候,再考慮對錶做水平拆分;針對大資料量的表,這一步最麻煩,最能考驗技術水平,要選擇乙個合理的sharding key,為了更好的查詢效率,可能需要修改表結構,對某些資料做冗餘存放,此外應用也可能要修改,sql中盡量帶sharding key,將資料定位到限定的表中去查詢,而不是掃瞄全部的表。

MySQL千萬級資料表的優化實戰記錄

這裡先說明一下,網上很多人說阿里規定500w資料就要分庫分表。實際上,這個500w並不是定義死的,而是與mysql的配置以及機器的硬體有關。my為了提公升效能,會將表的索引裝載到記憶體中。但是當表的資料到達一定的量的時候,會導致記憶體無法儲存這些索引,無法儲存索引,就只能進行磁碟io,從而導致效能下...

千萬級別mysql資料表優化

第一優化你的sql和索引 第二加快取,memcached,redis 第三以上都做了後,還是慢,就做主從複製或主主複製,讀寫分離,可以在應用層做,效率高,也可以用三方工具,第三方工具推薦360的atlas,其它的要麼效率不高,要麼沒人維護 第四如果以上都做了還是慢,不要想著去做切分,mysql自帶分...

mysql千萬級資料大表該如何優化

1.資料的容量 1 3年內會大概多少條資料,每條資料大概多少位元組 2.資料項 是否有大字段,那些欄位的值是否經常被更新 3.資料查詢sql條件 哪些資料項的列名稱經常出現在where group by order by子句中等 4.資料更新類sql條件 有多少列經常出現update或delete ...