MySQL 變數及性能狀態查看知識技巧
1995年首發以來,MySQL不僅自己「星途坦蕩」,成為了現今最流行的關係型資料庫,同時還衍生出很多備受矚目的分支,如在資料庫領域撕開缺口並成功佔據一席之地的 MariaDB 及 Percona。
今天,我們就來談談如何查看MySQL性能狀態並優化。
如何查看查看MySQL性能?
現在大家對MySQL的監控通常有兩種做法,一是連接到mysql資料庫內部,使用show status,show variables,flush status 來查看mysql的各種性能指標;二是直接使用mysqladmin查看其性能指標。
方法一的使用:
- 查看MySQL伺服器配置信息 :mysql> show variables;
- 查看MySQL伺服器運行的各種狀態值 :mysql> show global status;
- 慢查詢:mysql> show variables like "%s%";
- mysql> show global status like "%slow%";
- 連接數:mysql> show variables like "max_connections";
- key_buffer_size 是對MyISAM表性能影響最大的一個參數mysql> show variables like "key_buffer_size";
- 臨時表:mysql> show global status like "created_tmp%";
- 查看open table :mysql> show global status like "open%tables%";
- 進程使用情況:mysql> show global status like "Thread%";
- 查詢緩存(query cache) :mysql> show global status like "qcache%";
- 文件打開數(open_files) :mysql> show global status like "open_files";
- 表鎖情況 :mysql> show global status like "table_locks%";
- 表掃描情況 :mysql> show global status like "handler_read%";
方法二的使用:
UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
mysqladmin兩個參數,status,extended-status
shell > mysqladmin -uroot -ppassword variables status
其中包含的信息如下:
- Uptime: 4557887 #mysql運行的秒數
- Threads: 1 #連接數
- Questions: 1684130 #The number of questions (queries) from clients since the server was started.
- Slow queries: 0 #The number of queries that have taken more than long_query_time seconds
- Opens: 221872 #The number of tables the server has opened.
- Flush tables: 1 #The number of flush-*, refresh, and reload commands the server has executed.
- Open tables: 64 #The number of tables that currently are open.
- Queries per second avg: 0.369 #從上次運行開始計算,每秒鐘平均查詢次數
關鍵的MySQL統計指標
當資料庫出現查詢緩慢或者無法響應查詢的情況時,應該怎麼辦呢?我們可以通過監控與性能及資源利用率相關的指標,來查找出現這個問題的原因,避免依賴資料庫性能的相關組件也產生影響。
MySQL用戶可以接觸到的性能指標有幾百個,本文介紹四個比較關鍵常用的指標,查詢吞吐量、查詢執行性能、連接情況和緩衝池使用情況。
查詢吞吐量:MySQL內部有一個名為 Questions 的計數器,客戶端每發送一個查詢語句,其值就會加一,可利用其來衡量查詢吞吐量,SHOW GLOBAL STATUS LIKE "Questions";
查詢執行性能:監控查詢延遲的方式有很多,例如通過 MySQL 內置的指標,或者通過查詢性能模式。 MySQL 5.6.6 版本開始默認啟用,MySQL 的 performance_schema 資料庫中的表格存儲著伺服器事件與查詢執行的低水平統計數據。
連接情況:MySQL的文檔指出,健壯的伺服器應該能夠處理成百上千的連接數,可通過SHOW VARIABLES LIKE "max_connections";的形式來查看。
緩衝池使用情況:MySQL 默認的存儲引擎 InnoDB 使用了一片稱為緩衝池的內存區域,用於緩存數據表與索引的數據。如果資料庫性能開始下滑,而磁碟 I/O 在不斷攀升,擴大緩衝池往往能帶來性能回升。
※知乎李大海:AI不只是噱頭,滿足需求才是真落地
※2035年的宇宙時空隧道已向你開啟
TAG:IT168企業級 |