MYSQL 數據庫的穩定運行指標


通常會關注一下四個與性能和資源利用率相關的指標: 查詢吞吐量連接情況緩沖池使用情況以及 查詢執行性能等。
 
數據庫吞吐量
   對於數據庫而言,最重要的工作就是實現對數據的增、刪、改、查。為了 衡量數據庫服務器當前的吞吐量變化情況
在MySQL內部通過一個名為 Questions的計數器當客戶端發送一個查詢語句后,其值就會+1
可以通過以下MySQL指令查詢Questions等服務器狀態變量的值:
    show global status like "Questions";
 
    一般還可以從監控 讀操作和寫操作的執行情況進行判斷。通過MySQL全局狀態中的 Com_select可以查詢到當前服務器執行 查詢語句的總次數
相應的,也可以通過 Com_insertCom_update以及 Com_delete的總量衡量當前服務器 寫操作的總次數,
    例如,可以通過以下指令查詢當前MySQL實例insert語句的執行次數總量:
        show global status like "Com_insert";
 
連接情況
   在MySQL中通過全局設置 max_connections限制了當前服務器允許的最大客戶端連接數量。一旦可用連接數被用盡,新的客戶端連接都會被直接拒絕。
因此當監控MySQL運行狀態時,需要時刻關注MySQL服務器的連接情況。用戶可以通過以下指令查看當前MySQL服務的max_connections配置:
     show variables like "max_connections";
     MySQL默認的最大鏈接數為200(這個數值是上述命令查出的結果值)。 臨時調整最大連接數,可以通過以下指令進行設置:
         set global max_connections = 210;
     如果想永久化設置,則需要通過修改MySQL配置文件my.cnf,添加以下內容:
         max_connections = 210
 
    通過Global Status中的 Threads_connected、Aborted_connects、Connection_errors_max_connections以及Threads_running可以查看當前MySQL實例的連接情況。
    例如,通過以下指令可以直接當前MySQL實例的連接數:
        show global status like "Threads_connected";
   當 所有可用連接都被占用時,如果一個客戶端嘗試連接至MySQL,會出現“Too many connections(連接數過多)”錯誤,
同時Connection_errors_max_connections的值也會增加。為了防止出現此類情況,你應該監控可用連接的數量,
確保其值保持在max_connections限制以內。同時 如果Aborted_connects的數量不斷增加,說明客戶端嘗試連接到MySQL都失敗了。
此時可以通過Connection_errors_max_connections以及Connection_errors_internal分析連接失敗的問題原因。  
    
  • mysql_global_variables_max_connections: 允許的最大連接數;
  • mysql_global_status_threads_connected: 當前開放的連接;
  • mysql_global_status_threads_running:當前開放的連接;
  • mysql_global_status_aborted_connects:當前開放的連接;
  • mysql_global_status_connection_errors_total{error="max_connections"}:由於超出最大連接數導致的錯誤;
  • mysql_global_status_connection_errors_total{error="internal"}:由於系統內部導致的錯誤;
監控緩沖池使用情況
 MySQL默認的存儲引擎InnoDB使用了一片稱為緩沖池的內存區域, 用於緩存數據表以及索引的數據。 當 緩沖池的資源使用超出限制后,可能會導致 數據庫性能的下降同時很多查詢命令會直接在磁盤中執行,導致磁盤I/O不斷攀升。 因此,應該 關注MySQL緩沖池的資源使用情況,並且在合理的時間擴大緩沖池的大小可以優化數據庫的性能
Innodb_buffer_pool_pages_total反映了當前緩沖池中的內存頁的總頁數。可以通過以下指令查看:
     show global status like "Innodb_buffer_pool_pages_total";
 
Innodb_buffer_pool_read_requests記錄了 正常從緩沖池讀取數據的請求數量。可以通過以下指令查看:
     show global status like "Innodb_buffer_pool_read_requests";
 
緩沖池無法滿足時,MySQL只能從磁盤中讀取數據Innodb_buffer_pool_reads即記錄了從磁盤讀取數據的請求數量
通常來說從 內存中讀取數據的速度要比從磁盤中讀取快很多,因此,如果 Innodb_buffer_pool_reads的值開始增加,可能 意味着數據庫的性能有問題。
可以通過以下命令查看Innodb_buffer_pool_reads的數量:
     show global status like "Innodb_buffer_pool_reads";
 
 
查詢性能
   MySQL還提供了一個 Slow_queries的計數器,當查詢的執行時間超過long_query_time的值后,計數器就會+1,其默認值為10秒,
可以通過以下指令在MySQL中查詢當前long_query_time的設置:
     show variables like "long_query_time";
    
     通過以下指令可以查看當前MySQL實例中Slow_queries的數量:
         show global status like "Slow_queries";
 
     通過 監控Slow_queries的增長率,可以 反映出當前MySQL服務器的性能狀態 ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM