mysql效能調優
提高mysql系統的效能、影響速度
-替換硬體(cpu/磁碟/記憶體等)
-服務程式的執行引數調整
-對sql查詢進行優化
併發及連線控制
-連線數、連線超時
max_connections //允許的最大併發連線數
connect_timeout //等待建立連線的超時秒數,預設10秒,只在登入時有效
wait_timeout //等待關閉連線的不活動超時秒數,預設28800秒(8小時)
-產看當前已使用的連線數
mysql>flush status;
mysql>show globale status like "max_used_connections";
-檢視預設的最大連線數
mysql>show variables like "max_connections";
-快取引數控制
快取區、執行緒數量、開表數量
key_buffer_size //用於myisam引擎的關鍵索引快取大小
sort_buffer_size //為每個要排序的執行緒分配此大小的快取空間
read_buffer_size //為順序讀取表記錄保留的快取大小
read_rnd_buffer_size //為按排序結果讀取表記錄保留的快取大小
thread_cache_size //允許儲存在快取中被重用的執行緒數量
table_open_cache //為所有執行緒快取的開啟的表的數量
key_buffer_size=8m
當key_reads/key_read_requests較低時可適當加大此快取值
mysql>show global status like "key_read%";
mysql>show variables like "key_buffer_size";
sort_buffer_size=256k
增大此值可提高order和group的速度
mysql>show variables like "sort_buffer_size";
檢視表記錄讀取快取
-此快取值影響sql查詢的響應速度
mysql>show variables like "read_%_size";
檢視可重用執行緒
mysql>show variables like "thread_%_size";
檢視當前的執行緒重用狀態
mysql>show global status like "threads_%";
檢視已開啟、開啟過多少個表
mysql>show global status like "open%tables";
檢視可快取多少個開啟的表
mysql>show variables like "table_open_cache";
sql查詢優化
mysql日誌型別,常用日誌種類及選項:
錯誤日誌 log_error[=name] //記錄啟用/執行/停止過程的錯誤訊息
查詢日誌 general_log,general_log_file= //記錄客戶端連線和查詢操作
慢查詢日誌 slow_query_log,slow_query_log_file=,long_query_time= //記錄耗時較長或不使用索引的查詢操作
記錄慢查詢:
slow-query-log //啟用慢查詢
slow-query-log-file //指定慢查詢日誌檔案
long-query-time //超過指定秒數(預設10秒)的查詢才被記錄
log-queries-not-using-indexes //記錄未使用索引的查詢
調整服務配置:
vim /etc/my.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=mysql-slow.log
long_query_time=5
log_queries_not_using_indexes=1
systemctl restart mysqld
檢視慢查詢日誌,使用mysqldumpslow工具
mysqldumpslow /var/lib/mysql/mysql-slow.log
檢視快取的大小
mysql>show variables like "query_cache%";
檢視當前的查詢快取統計
mysql>show global status like "qcache%";
mysql效能調優
1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在where子句中對字段進行null判斷,否則會導致引擎放棄使用索引而進行全表掃瞄。3.應盡量避免在where子句中使用 或 操作符,否則會導致引擎放棄使用索引而進行全表掃瞄。4...
Mysql效能調優
mysql 效能調優有很多方面,主要是這幾個方面 1 正規化 是指表的列具有原子性,不可再拆分,只要資料庫是線性的,都自動滿足1nf。2 正規化 表中的紀錄是唯一的。3 正規化 表中資料不應該有冗餘,如果通過某個欄位就能得到跟該字段相關的資訊,就沒必要將這些資訊,再存放到該表中。在3nf中,可能會對...
MySQL效能調優
1 經常用來讀的表使用myisam儲存引擎 2 其餘的表都用innodb儲存引擎 1 在select where order by常涉及到的字段上建立索引 2 where子句中不使用 否則將放棄使用索引進行全表掃瞄 3 盡量避免用null值判斷,否則會全表掃瞄 示例 select id from t...