分析命令
show full processlist;#該命令用於檢視當前連線到mysql伺服器的鏈結,以及經行的什麼操作及狀態。如果不加full,只能列出當前100條。
show [global|session] status;#用於資料庫執行時統計資訊,預設是session。
show [global|session] variables;#用於查詢資料庫的設定。
注意:show status/variables 預設session是檢視當前會話的值,global是全域性的。通俗解釋:乙個是你本session的值,乙個是所有session累計的值。
show create table [具體表名];#檢視表的詳細的建立語句,便於使用者對錶進行優化。
show indexes from [具體表名];#檢視表的所有索引,cardinality列很重要,表示不重覆記錄的預估值(不是乙個準確值)。
注意:在實際應用中,cardinality/n_row_in_table (n_row_in_table為表記錄行數)應盡可能的接近1,如果非常小,那使用者需要考慮是否還有必要建立這個索引。
確定耗時較多的查詢語句
show status like 'slow_queries';#查詢慢查詢次數。
show variables like 'long_query_time';#檢視慢查詢設定的時間 ,預設10s。
set long_query_time = 1;#設定慢查詢時間。
set global slow_query_log = on;#開啟慢日誌。
show variables like '%quer%';#模糊查詢quer相關設定,在 slow_query_log_file 可以找到慢日誌檔案的位置。
explain [具體的sql語句]#使用explain來分析sql語句實現優化sql語句,explain後面的sql語句並不會執行。
explain partitions [具體的sql語句]#用於檢視存在分割槽的表的執行計畫
資料庫連線數
show variables like 'max_connections';#檢視當前伺服器配置的最大連線數。
set global max_connections=10000;#設定最大連線數。
show global status like '%max_used_connections%';#檢視當前已使用最大連線數。
設定連線超時時間
①wait_timeout的作用是,設定非互動連線(就是指那些連線池方式、非客戶端方式連線的)的超時時間,預設是28800秒,就是8小時,超過這個時間,mysql伺服器會主動切斷那些已經連線的,但是狀態是sleep的連線。
show global variables like 'wait_timeout';#檢視當前wait_timeout,單位是 秒。
set global wait_timeout=300;#設定wait_timeout為 300 秒。
②interactive_timeout針對互動式連線的超時時間,所謂的互動式連線,即在mysql_real_connect()函式中使用了client_interactive選項。
show global variables like 'interactive_timeout';#檢視當前interactive_timeout,單位是 秒。
set global interactive_timeout=500;#設定interactive_timeout為500秒。
如何區分互動式連線和非互動式連線?
說得直白一點,通過mysql客戶端連線資料庫是互動式連線,通過jdbc連線資料庫是非互動式連線。在連線啟動的時候,根據連線的型別,來確認會話變數wait_timeout的值是繼承於全域性變數wait_timeout,還是interactive_timeout。
檔案開啟數
show variables like 'open%';#檢視當前伺服器允許的最大開啟檔案數。
show global status like 'open%file%';#open_files系統當前開啟的檔案數 ;opened_files系統開啟過的檔案總數。
其他常見效能查詢
show global status like 'thread%';#程序使用情況
show variables like 'key_buffer_size';#索引塊(index blocks)快取的大小,只對myisam表起作用,也是myisam表效能影響最大的乙個引數。
show variables like 'table_cache';#表快取記憶體的大小。不能盲目地把table_cache設定成很大的值。如果設定得太高,可能會造成檔案描述符不足,從而造成效能不穩定或者連線失敗。
show variables like 'thread_cache_size';#執行緒池快取大小,當 threads_cached 越來越少,但 threads_connected 始終不降 且 threads_created 持續公升高,這時可適當增加 thread_cache_size 的大小。
show global status like 'qcache%';#查詢快取(query cache)。qcache_lowmem_prunes的值非常大,則表明經常出現快取不夠的情況,同時qcache_hits的值非常大,則表明查詢快取使用非常頻繁,此時需要增加快取大小;qcache_hits的值不大,則表明你的查詢重複率很低,這種情況下使用查詢緩衝反而會影響效率,那麼可以考慮不用查詢快取。
小貼士:
根據上面命令應該都能總結得出:
①通過show variables like語句,我們可以查詢指定mysql設定的情況,show status同樣如此做篩選;
②設定變數值 可以通過set global [變數名]=[變數值];實現。
--end--
文末寄語:「難」也是如此,面對懸崖峭壁,一百年也看不出一條縫來,但用斧鑿,能進一寸進一寸,得進一尺進一尺,不斷積累,飛躍必來,突破隨之。
Mysql效能調優命令 show profile
show profile 是mysql提供的可以用來分析當前會話中sql語句執行的資源消耗情況的工具,可用於sql調優的測量。預設情況下處於關閉狀態,並儲存最近15次的執行結果。開啟show profile功能,預設該功能是關閉的,使用前需開啟。命令如下 使用儲存過程向teacher表中新增50w條...
mysql效能調優
1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在where子句中對字段進行null判斷,否則會導致引擎放棄使用索引而進行全表掃瞄。3.應盡量避免在where子句中使用 或 操作符,否則會導致引擎放棄使用索引而進行全表掃瞄。4...
Mysql效能調優
mysql 效能調優有很多方面,主要是這幾個方面 1 正規化 是指表的列具有原子性,不可再拆分,只要資料庫是線性的,都自動滿足1nf。2 正規化 表中的紀錄是唯一的。3 正規化 表中資料不應該有冗餘,如果通過某個欄位就能得到跟該字段相關的資訊,就沒必要將這些資訊,再存放到該表中。在3nf中,可能會對...