Mysql性能測試&服務器性能剖析

注:本篇是《高性能Mysql》第三版的讀書筆記

 

基準測試

基準測試即性能測試,是我們判斷系統的正確性&負載量的一個得力助手。

基準測試可以評估在項目未來的負載下,需要什麼硬件,需要多大容量的網絡,以及其他相關資源。總之壓測是必然的。

 

基準測試一共有兩個測試策略。

1.針對整個系統的整體測試。包括web   mysql  網絡  等等、所有的因素加到一起。

2. 單獨測試Mysql    執行sql比較不同的scheme或查詢的性能。

 

測試的指標分爲吞吐量和響應時間。

吞吐量指的是單位時間內執行的事務數。叫做TPS

併發性。web服務器的併發性指的是在任意時間有多少同時發生的併發請求QPS。  數據庫的併發可能打開了上千個連接,但只執行了數十個查詢。併發性基準測試需要關注的是正在工作中的併發操作,或者是同時工作中的線程數。(MySQL中的連接池我理解爲線程池)
可擴展性,給系統增加一倍的資源就能獲得兩倍的吞吐量、TPS

 

性能測試我就用過jmeter   可以起多個線程進行併發測試。

 

服務器性能剖析

性能優化是在固定的資源下能幹更多的事情了,讓資源利用率提升了。

一般對於一個接口/服務性能的排查過程可以在不同階段打日誌,先定位到整個服務/接口的問題出在哪,對應的慢查詢進行優化!

可以使用navicat   explain 創建查詢計劃對sql進行分析。

想使用mysql查變量配置的值的命令:show  variables;

show  profiles;  可以查看消耗時間,在配置的時候要保證set  profiling = 1 這樣纔會展示消耗時間,navicat是帶這個的。每次執行完都會有剖析,那個就是。狀態是status

 

還可以使用show  profile  for  query  (query_id)  來獲取制定查詢的操作的耗時。

show status

返回一下計數器,既有服務器級別的全局計數器,也有基於某個連接的會話級別的計數器。

 

一個問題

在排查慢sql的時候我們可能就先執行  explain  使用查詢計劃,看一下有沒有使用索引,有的時候發現使用索引了,但是爲啥還是那麼慢,我之前就有遇到過這個問題,這個一定要先從服務器出發,查看一下服務器的資源被啥佔用了,有沒有死鎖或者競爭。

這個特別顯著的特點就是:重啓的mysql服務,剛開始執行查詢並沒有問題,過一會在執行就賊慢,不用猶豫,絕壁是服務器的問題導致的。

show PROCESSLIST   來觀察線程的狀態。

在排查的時候可以使用GDB作爲堆棧跟蹤,這個會阻塞住進程。當然gdb更適合調試那些你自己寫的或者沒有影響的進程,不然可能會造成問題,所以mysql服務器不太適合使用。但是gdb對其他東西的調試絕對是個很不錯的選擇。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章