MySQL效能優化方案
阿新 • • 發佈:2020-12-17
前言
先引用一張圖片
目錄圖
一、SQL語句優化
- 開啟慢查詢功能
vim /etc/my.cnf
[mysqld]
slow-query-log = on # 開啟慢查詢功能
slow_query_log_file = /data/slow-query.log # 慢查詢日誌存放路徑與名稱
long_query_time = 5 # 查詢時間超過5s的查詢語句
log-queries-not-using-indexes = on # 列出沒有使用索引的查詢語句
1)檢視所有日誌狀態: show variables like '%quer%';
2)檢視慢查詢狀態:show variables like 'show%'
- 分析SQL語句
MySql內部函式explain(查詢sql的執行計劃),explain返回各列的含義
table:顯示這一行的資料是關於哪張表的 type:這是重要的列,顯示連線使用了何種型別。 從最好到最差的連線型別為const、eq_reg、ref、range、index 和ALL possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。 key:實際使用的索引。如果為NULL,則沒有使用索引。 keyjen:使用的索引的長度。在不損失精確性的情況下,長度越短越好 ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數 rows: MYSQL認為必須檢查的用來返回請求資料的行數
- 子查詢優化
子查詢儘量不用或改成join
- group by 優化
group by 儘量使用索引欄位
- limit 優化
給查詢語句增加limit
二、索引優化
- 重複索引
- 冗餘索引
- 檢查重複及冗餘索引的工具
- 刪除不用的索引
三、資料庫結構優化
- 選擇合適的資料型別
- 表的正規化化
- 表的反正規化化的使用
- 表的垂直拆分
- 表的水行拆分
四、配置優化
- 作業系統配置
1)快取池大小
2)開啟檔案限制
- MySQL配置
1)innodb緩衝池記憶體佔用大小
2)innodb_buffer_pool_instances 緩衝池個數
3)innodb_log_buffer_size 緩衝的大小
4)innodb IO配置
五、伺服器硬體優化
- CPU 多核
- 硬碟 raid0 raid1 raid5增加硬碟IO速度
參考文章列表:MySql資料庫優化可以從哪幾個方面進行? - 青春陽光 - 部落格園
p.s.收錄一些mysql第三方客戶端工具
- MySQL官網推薦 MySQL Workbench
- Navicat
- phpMyAdmin