MYSQL資料庫優化

2021-07-16 10:39:33 字數 1153 閱讀 2381

根據不同業務場景有不同的側重,優化的策略不同,比如資料量、訪問量

(qps每秒查詢率)、併發量、

讀寫比例、

資料是否快速增長、

資料需不需要強一致?

對於一些典型的場景可能會有成熟的解決方案。

優化sql和索引

很多情況下,這一步做的並不到位,甚至有的只做了根據sql去建索引,根本沒對sql優化,除了最簡單的增刪改查外,想實現乙個查詢,可以寫出很多種查詢語句,不同的語句,根據你選擇的引擎、表中資料的分布情況、索引情況、資料庫優化策略、查詢中的鎖策略等因素,最終查詢的效率相差很大;優化要從整體去考慮,有時你優化一條語句後,其它查詢反而效率被降低了,所以要取乙個平衡點;即使精通mysql的話,除了純技術面優化,還要根據業務面去優化sql語句,這樣才能達到最優效果;

快取

memcached,redis快取技術來緩解資料庫的讀取壓力

主從複製或主主複製

以上都做了後,還是慢,就做主從複製或主主複製,可以在應用層做,效率高,也可以用三方工具,第三方工具推薦360的atlas,其它的要麼效率不高,要麼沒人維護;

分割槽表

mysql自帶分割槽表,對應用是透明的,無需更改**,但是sql語句是需要針對分割槽表做優化的,sql條件中要帶上分割槽條件的列,從而使查詢定位到少量的分割槽上,否則就會掃瞄全部分割槽。不同業務場景,選擇不同的shading key

1)時間

和資料**類似

2)隨機字段

垂直拆分

根據你模組的耦合度,將乙個大的系統分為多個小的系統,也就是分布式系統。

水平切分

針對資料量大的表,這一步最麻煩,最能考驗技術水平,要選擇乙個合理的sharding key,為了有好的查詢效率,表結構也要改動,做一定的冗餘,應用也要改,sql中盡量帶sharding key,將資料定位到限定的表上去查,而不是掃瞄全部的表;

選擇不同的儲存引擎

根據不同業務選用不同儲存引擎     

mysql的優化一般都是按照這個步驟去演化的,成本也是由低到高。效能優化是無止境的,當效能可以滿足需求時即可。注意不要過度優化,也不用過早的優化。

mysql資料庫優化索引 mysql資料庫索引調優

一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...

mysql資料庫優先 MySQL資料庫優化

1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...

mysql資料庫優化

用到啥學啥,mysql資料庫優化成了這幾天的老大難問題。瘋狂的尋找mysql優化的資料,覺得有用的不少,記錄下跟大家分享,對了,這裡僅僅是mysql資料庫本身的優化,沒有寫磁碟之類的 開始之前,介紹倆mysql的命令 show global status 檢視執行狀態的,顯示執行各種狀態值 show...