1. 程式人生 > >服務器性能剖析——高性能MySQL筆記

服務器性能剖析——高性能MySQL筆記

請求 分析 性能評價 間歇性 搜索引擎 無法 統計 mysql筆記 度量

【前言】閱讀高性能mysql第三章,學習到了從數據庫的角度來分析服務器的性能評價,總結一下。三個常見的服務器性能問題:

  (1)如何確定服務器性能達到了最佳的狀態?

  (2)找出某條語句問什麽執行的不夠快的原因?

  (3)診斷造成客戶端“卡頓”、“堆積”的某些間歇性疑難故障。

   解決什麽三個問題,看似困難。有簡單方法就是專註於分析服務器的時間花費在了那裏?使用的技術就是性能剖析。將展示如何測量系統並生成剖析報告,以及如何分析系統整個堆棧,包括從應用程序到數據庫服務器到單個查詢。

一、性能優化簡介

  性能定義有很多角度,我們定義一個:為完成某件任務所需的時間度量,即發送給服務器一條指令,其響應時間。由此引出第二個原則:無法測量就無法有效的優化。

  性能剖析有兩個步驟:測量任務所花費的時間;然後進行結果統計和排序,將重要的任務排到前面。分析的時候去辨別是執行耗時還是等待耗時,兩個可以都測一下,現在數據庫都提供了測量點來支持數據庫的可測量性能。但是測量當然會花費時間消耗,但是一般情況下因為測量點的存在會給數據庫帶來10%甚至更多的提升。所以在交易系統中加入測量點或者預警機制,還是有用的。

二、對應用程序性能剖析

  對應用程序的剖析最好還是自上而下的進行,比如調用了外部的搜索引擎,需要讀取一個大的xml文件,在循環中執行大量的正則表達式,使用了抵消的算法。雖然,性能問題大多數都是數據據庫有關。所以可以在應用代碼中加入性能剖析代碼,一般都有成套的測試代碼工具接口,new relic。是會占一些消耗,可以在集群中一臺服務器運行,或者部分代碼片段運行。

三、剖析mysql的查詢(一次操作的響應時間)

  一般兩種方式,第一種:剖析服務器負載

   1、慢查詢日誌,即捕獲的比較慢的查詢的日誌。現在可以捕獲所有查詢了。其記錄了每一個查詢的操作(這裏查詢就是指一次請求的響應時間)

   2、tcpdump抓包

四、都是實戰的內容,就不翻譯了,需要親自去實戰!

  總的來說,若想提高優化服務器性能,就是先生成一個“操作報告”(查詢報告到日誌中,利用pt-query-digest工具生成系統級別的剖析報告。分析性能低下的操作,找到壞的操作時,進一步使用例如show profile以及其他諸如explain這樣的工具。

服務器性能剖析——高性能MySQL筆記