高性能MySQL-筆記1-基礎數據獲取分析

高性能MySQL-筆記1-基礎數據獲取分析

第三方存儲引擎

  • Infobright:數據倉庫
    • 超高的查詢統計優化和壓縮比例(10:1~40:1),
    • 引入了列存儲方案,
    • 不需要建索引,使用內部知識網格節點。
    • 查詢性能高:百萬、千萬、億級記錄數條件下,同等的SELECT查詢語句,速度比MyISAM、InnoDB等普通的MySQL存儲引擎快5~60倍。(TB級數據)
    • 不支持數據更新:社區版Infobright只能使用“LOAD DATA INFILE”的方式導入數據,不支持INSERT、UPDATE、DELETE。
    • 不支持高併發:只能支持10多個併發查詢。
  • TokuDB
    • 專爲在寫入密集型工作負載上實現高性能而設計,可通過分形樹索引實現。
    • 適合像 Zabbix 這種高 INSERT,少 UPDATE 的應用場景

基準測試

工具:sysbench (工具還有很多的,例如:TPCC-MYSQL )

作用:測試系統的硬件性能,也可以用來對數據庫進行基準測試;【P58】

感覺上沒什麼用,通常的性能瓶頸都是在特定表的查詢上。

在調整MySQL系統配置【內存池大小等】的時候,可以使用基準測試驗證性能提升比例。


性能剖析

performance_schema

提供了一種在數據庫運行時實時檢查server的內部執行情況的方法

performance_schema通過監視server的事件來實現監視server內部運行情況, “事件”就是server內部活動中所做的任何事情以及對應的時間消耗,利用這些信息來判斷server中的相關資源消耗在了哪裏?一般來說,事件可以是函數調用、操作系統的等待、SQL語句執行的階段(如sql語句執行過程中的parsing 或 sorting階段)或者整個SQL語句與SQL語句集合。事件的採集可以方便的提供server中的相關存儲引擎對磁盤文件、表I/O、表鎖等資源的同步調用信息。

信息表:【有很多】

events_statements_current當前語句事件表
events_statements_history歷史語句事件表
events_statements_history_long長語句歷史事件表

記錄一些簡單使用【未測試】:

來源:http://blog.itpub.net/24930246/viewspace-2644172/

打開等待事件的採集器配置項開關,需要修改setup_instruments 配置表中對應的採集器配置項。

update setup_instruments set enabled = 'YES', timed = 'YES'where name like 'wait%';

打開等待事件的保存表配置開關,修改修改setup_consumers 配置表中對應的配置項。

update setup_consumers set enabled = 'YES' where name like '%wait%';

配置好之後,我們就可以查看server當前正在做什麼,可以通過查詢events_waits_current表來得知,該表中每個線程只包含一行數據,用於顯示每個線程的最新監視事件(正在做的事情);

我們大多數時候並不會直接使用performance_schema來查詢性能數據,而是使用sys schema下的視圖代替;

MySQL percona-toolkit [最常用工具]

官網:https://www.percona.com/doc/percona-toolkit/2.2/index.html
博客參考:
https://blog.csdn.net/wanbin6470398/article/details/83178755
https://blog.csdn.net/demonson/article/details/87270061

超級好像的工具的感覺,看了下提供的一些命令,相當的豐富。

這個工具,估計真的需要好好研究使用一下,很裝逼的樣子(▼へ▼メ)

作用:Percona Toolkit是Percona(http://www.percona.com/)的支持人員使用的高級命令行工具的集合,以執行各種MySQL和系統任務,這些任務很難或太複雜而無法手動執行。

常用的功能介紹【部分】:【https://blog.csdn.net/demonson/article/details/87270061】

  • pt-archive:數據庫歸檔
  • pt-duplicate-key-checker:用來檢查mysql表是否有重複的索引和外鍵。
  • pt-mysql-summary:MySQL的狀態和配置統計信息。
  • pt-query-digest:分析mysql慢查詢的一個工具。※
  • pt-stalk : 監控系統信息,可配置各種閥值
  • 主從數據庫相關
  • 權限,磁盤IO信息等等

Oprofile

是linux上的性能監測工具,通過CPU硬件提供的性能計數器對事件進行採樣,從代碼層面分析程序的性能消耗情況,找出程序性能的問題點。

用於,數據庫性系統性能使用佔比。來分析,性能問題的瓶頸。

iostat

不知道是啥,書裏是用來看io流情況的。╮(╯_╰)╭ [P100]


Mysql查詢分析

工具:慢查詢日誌+MySQL percona-toolkit - pt-query-digest

作用:查詢整個MySQL的查詢性能,並定位需要優化的查詢。

對於單條SQL的分析,使用Nacicat Premium 工具裏面的分析就很全面了。

查看慢日誌統計:

按秒:
awk '/^# Time:/{print $3,$4,c;c=0}/^# User/{c++}' mysql-slow-3306.log

按天:
grep  Time: mysql-slow-3306.log | awk '{print $3}'|awk '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t: 

按分鐘:
grep  Time: mysql-slow-3306.log | awk '{print $3,$4}'|awk -F : '{print $1,$2}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:

按小時:
grep  Time: mysql-slow-3306.log | awk '{print $3,$4}'|awk -F : '{print $1}' | awk -F : '{a[$1]++}END{for (j in a) print j,": " a[j]}' | sort -nrk2 -t:

查看消耗的內存(需要分配的內存):

select event_name,SUM_NUMBER_OF_BYTES_ALLOC/1024/1024 from memory_summary_global_by_event_name order by SUM_NUMBER_OF_BYTES_ALLOC desc limit 10;

參考


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