1. 伺服器效能引數查詢
show [global|session] status like '引數'2. 慢查詢;一些常用的效能引數如下:
• connections:連線mysql伺服器的次數。
• uptime:mysql伺服器的上線時間。
• slow_queries:慢查詢的次數。
• innodb_rows_read:select查詢返回的行數
• innodb_rows_inserted:執行insert操作插入的行數
• innodb_rows_updated:執行update操作更新的行數
• innodb_rows_deleted:執行delete操作刪除的行數
• com_select:查詢操作的次數。
• com_insert:插入操作的次數。對於批量插入的 insert 操作,只累加一次。
• com_update:更新操作的次數。
• com_delete:刪除操作的次數。
• last_query_cost:上次查詢涉及到的資料頁數。
1. 檢視慢查詢是否開啟show variables like
'%slow_query_log%
'2. 開關慢查詢(只有在需要調優的時候開啟,其餘時間應該關閉,因為它會影響效能)
set
global slow_query_log='on'
;set global slow_query_log='off';
3. 檢視慢查詢的閾值 show variables like3. 慢查詢日誌分析工具 :mysqldumpslow'%long_query_time%
'; 4. 修改慢查詢閾值(也可以通過配置檔案修改,但是需要重啟服務) set
global long_query_time = 1; #
全域性修改,下次重啟會失效 set long_query_time=1; #
本次回話修改 ,下次重啟會失效
5. 檢視慢查詢的條數
show global status like '%slow_queries%';
4. 檢視sql執行成本
1. 檢視是否開啟5. explainshow variables like
'profiling';
2. 修改狀態
set profiling = '
on'; #
'off'
3. 檢視當前回話的所有profiles
show profiles;
4. 檢視具體sql的執行成本
show profiles;
#最近一條sql
show profile cpu,block io for query 2; #
檢視第2條sql的執行成本,2來自於show profiles結果的序號
1. 各個欄位的含義

1. 關於id
id如果相同,可以認為是一組,從上往下順序執行2. select_type在所有組中,id值越大,優先順序越高,越先執行
關注點:id號每個號碼,表示一趟獨立的查詢, 乙個sql的查詢趟數越少越好
mysql為每乙個select關鍵字代表的小查詢都定義了乙個select_type屬性,它表示了小查詢在大查詢彙總扮演的角色3. type(重點)
結果值從最好到最壞依次是:4. rows: 預估需要掃瞄的條數,值越小越好system > const > eq_ref > ref > fulltext > ref_or_null > index_merge >unique_subquery > index_subquery > range > index >all
sql 效能優化的目標:至少要達到 range 級別,要求是 ref 級別,最好是 consts級別。(阿里巴巴開發手冊要求)
6. explain的不同輸出格式
1. explain select ... #7. 索引失效的情況傳統格式
2. explain format=json select ... #
json格式,輸出的資訊額外包含執行成本
3. explain format=tree select ... #
輸出的資訊量很少
計算、函式、型別轉換(自動或手動)會導致索引失效聯合索引有最左字首原則
聯合索引時,範圍字段右側的索引全部失效
不等於(!= 或者<>)索引失效
is null可以使用索引,is not null無法使用索引(大部分情況下,列中不應該出現null,即使有,應該給個預設值)
like以萬用字元%開頭索引失效
or 前後存在非索引的列,索引失效。非索引列會導致掃瞄全表,如果兩個都是索引列,會index_merge,兩個索引都走,讀最後的結果union
資料庫和表的字符集應該統一使用utf8mb4
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...