久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL性能突發事件問題的排查技巧有哪些呢

198次閱讀
沒有評論

共計 3767 個字符,預計需要花費 10 分鐘才能閱讀完成。

MySQL 性能突發事件問題的排查技巧有哪些呢,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

經過多年的實際經驗,整理了一些材料,已 Linux 環境下 MySQL 性能突發事件問題排查技巧分享給大家。

作為 DBA 在面對性能上突發問題的時候,是否出現過束手無策,無從下手的經歷。其實性能無非問題點在于存儲、操作系統,應用程序,數據庫 等方面。

性能分析問題 并沒有想象的那么難,當了解到一些常用的 Linux 系統命令和 MySQL 的基礎排查命令的時候,所有問題點都可以定位到。

先上一個 Linux 性能工具圖譜圖,Brendan D. Gregg 動態追蹤工具 DTrace 的作者。

有點復雜,不用太 care,只要你理解了下面的常用命令和分析點,那就可以確定絕大數性能上問題。

Linux 平臺基礎常用的性能收集工具:

1. top mdash; Linux 系統進程監控

top 命令是 Linux 下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于 Windows 的任務管理器。并且它也是 Linux   系統管理員經常使用的監控系統性能的工具。Top 命令可以定期顯示所有正在運行和實際運行并且更新到列表中,它顯示出 CPU   的使用、內存的使用、交換內存、緩存大小、緩沖區大小、過程控制、用戶和更多命令。它也會顯示內存和 CPU 使用率過高的正在運行的進程。

2. vmstat mdash; 虛擬內存統計

vmstat 命令是用于顯示虛擬內存、內核線程、磁盤、系統進程、I/O 模塊、中斷、CPU 活躍狀態等更多信息。

3. lsof mdash; 打開文件列表

lsof 命令對于很多 Linux/Unix   系統都可以使用,主要以列表的形式顯示打開的文件和進程。打開的文件主要包括磁盤文件、網絡套接字、管道、設備和進程。這個命令很容易看出哪些文件正在使用。

4. tcpdump mdash; 網絡數據包分析器

tcpdump 是一種使用最廣泛的命令行網絡數據包分析,將網絡中傳送的數據包完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾   并提供 and、or、not 等邏輯語句來幫助你去掉無用的信息。

包可通過 tcpdump 命令解析,也可以保存成后綴為 pcap 的文件,使用 wireshark 等軟件進行查看。

3. netstat mdash; 網絡統計

netstat   命令是一個監控網絡數據包傳入和傳出的統計界面的命令行工具。它對于許多系統管理員去監控網絡性能和解決網絡相關問題是一個非常有用的工具。

4. iostat mdash; 輸入 / 輸出統計

iostat 是收集和展示系統輸入和輸出存儲設備統計的簡單工具。這個工具通常用于查找存儲設備性能問題,包括設備、本地磁盤、例如 NFS 遠程磁盤。

除了上述 還有 其他一些 Linux 常用的工具 sar,htop,IPTraf,iotop,iftop,iptraf 等。

MySQL 常用性能突發事件分析命令:

1. SHOW PROCESSLIST; mdash; 當前 MySQL 數據庫的運行的所有線程

2. INNODB_TRX; mdash; 當前運行的所有事務

## 當前運行的所有事務,還有具體的語句

3. INNODB_LOCKS; mdash; 當前出現的鎖

## 當前事務出現的鎖的語句信息

MySQL 性能突發事件問題的排查技巧有哪些呢

4. INNODB_LOCK_WAITS; mdash; 鎖等待的對應關系計

## 鎖等待的對應關系

MySQL 性能突發事件問題的排查技巧有哪些呢

5. SHOW OPEN TABLES where In_use mdash; 當前打開表

查看哪些表在使用中,In_use 列表示有多少線程正在使用某張表,Name_locked 表示表名是否被鎖,這一般發生在 Drop 或 Rename 命令操作這張表時。所以這條命令不能幫助解答我們常見的問題:當前某張表是否有死鎖,誰擁有表上的這個鎖等。

MySQL 性能突發事件問題的排查技巧有哪些呢

下面比較重點部分,請注意!

6. SHOW ENGINE INNODB STATUS \G; mdash;Innodb 狀態

顯示除了大量的內部信息,輸出內容比較復雜難懂, 輸出內容中包含了一些平均值的統計信息,這些平均值是自上次輸出結果生成以來的統計數。

MySQL 性能突發事件問題的排查技巧有哪些呢

具體分析如下:

①.Header

這部分簡單的打印,輸出的時間,以及自從上次輸出的間隔時間。

MySQL 性能突發事件問題的排查技巧有哪些呢

②.BACKGROUND THREAD

MySQL 性能突發事件問題的排查技巧有哪些呢

MySQL 性能突發事件問題的排查技巧有哪些呢

③. SEMAPHORES 信號量

MySQL 性能突發事件問題的排查技巧有哪些呢

OS WAIT ARRAY INFO 操作系統等待數組的信息,它是一個插槽數組,innodb 使用了多少次操作系統的等待

保留統計 (reservation count) 顯示了 innodb 分配插槽的頻度

信號計數(signal count) 衡量的是線程通過數組得到信號的頻度

RW-shared spins:# 這行顯示讀寫的共享鎖的計數器

RW-excl spins:# 這行顯示讀寫的排他鎖的計數器

RW-sx spins:# 這行顯示共享排它鎖計數器

* 備注:5.7.2 增加了一種新的讀寫鎖類型稱為 SX 共享排他鎖

鎖的擁有則可以讀表中的任何數據,如果在相應的行上能夠獲得 X 鎖,則可以修改該行。

MySQL 性能突發事件問題的排查技巧有哪些呢

④. TRANSACTIONS

包含 Innodb 事務 (transactions) 的統計信息,還有當前活動的事務列表。

MySQL 性能突發事件問題的排查技巧有哪些呢

transaction id:這個 ID 是一個系統變量隨時每次新的 transaction 產生而增加。

Purge done:正在進行清空 (purge) 操作的 transaction ID。你可以通過查看第 transaction id 和第 Purge done  ID 的區別,明白沒有被 purge 的事務落后的情況。

History listlength:記錄了 undo spaces 內 unpurged 的事務的個數。

⑤. FILE I/O

顯示了 I /O Helper thread 的狀態,包括一些統計信息

MySQL 性能突發事件問題的排查技巧有哪些呢

MySQL 性能突發事件問題的排查技巧有哪些呢

pending operations, pending 的 log 和 buffer pool thread 的 fsync()調用

399 OS file:行顯示了 reads, writes, and fsync()調用次數。

0.00 reads/s hellip; hellip; : 顯示了每秒的統計信息

備注:“aio”表示“異步 I /O(asynchronous I/O).”

⑥. INSERT BUFFER AND ADAPTIVE HASH INDEX

MySQL 性能突發事件問題的排查技巧有哪些呢

Ibuf:insertbuffer 的一些信息,包括 free list, segment size

Hash table:顯示了 hash table 的一些信息 *** 一行顯示了每秒進行了多少次 hash 搜索,以及非 hash 搜索

⑦. LOG

MySQL 性能突發事件問題的排查技巧有哪些呢

Log sequence number 表示的是 redo log buffer 中的 lsn

Log flushed up to 表示的是 redo log file 中的 lsn

Pages flushed up to 表示的緩沖池最舊臟頁的 lsn

Last checkpoint at 指的就是最近一個物理頁刷新到磁盤時,它的 fil_page_lsn 的變量值。

⑧. BUFFER POOL AND MEMORY

當前內存使用狀態

MySQL 性能突發事件問題的排查技巧有哪些呢

Pages read ahead:顯示了每秒線性預讀跟隨機預讀的次數

備注:InnoDB 提供了兩種預讀的方式,一種是 Linear read  ahead,由參數 innodb_read_ahead_threshold 控制,當你連續讀取一個 extent 的 threshold 個 page   的時候,會觸發下一個 extent 64 個 page 的預讀。另外一種是 Random  read-ahead,由參數 innodb_random_read_ahead 控制,當你連續讀取設定的數量的 page 后,會觸發讀取這個 extent 的剩余 page。InnoDB   的預讀功能是使用后臺線程異步完成。

⑨. ROW OPERATIONS

MySQL 性能突發事件問題的排查技巧有哪些呢

0 queries inside InnoDB, 0 queries in queue:顯示了有多少線程在 Innodb 內核

read views open inside InnoDB:顯示了有多少 read view 被打開了,一個 read view 是一致性保證的 MVCC  “snapshot”

備注:innodb 多版本并發 (MVCC) 通過 read view 來確定一致性讀時的數據庫 snapshot, innodb 的 read  view 確定一條記錄能否看到,

在 RC 隔離級別下,是每個 SELECT 都會獲取 *** 的 read view;

在 RR 隔離級別下,則是當事務中的 *** 個 SELECT 請求才創建 read view

7. SHOW STATUS LIKE innodb_row_lock_% mdash; 鎖性能狀態

查看當前鎖性能狀態

MySQL 性能突發事件問題的排查技巧有哪些呢

解釋如下:

Innodb_row_lock_current_waits:當前等待鎖的數量

Innodb_row_lock_time:系統啟動到現在、鎖定的總時間長度

Innodb_row_lock_time_avg:每次平均鎖定的時間

Innodb_row_lock_time_max:最長一次鎖定時間

Innodb_row_lock_waits:系統啟動到現在、總共鎖定次數

8. SQL 語句 EXPLAIN; mdash; 查詢優化器

EXPLAIN 執行計劃部分,略過

作為一個 DBA,問題排查技巧是每個工程師都需要掌握的核心技能。

看完上述內容,你們掌握 MySQL 性能突發事件問題的排查技巧有哪些呢的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-19發表,共計3767字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 婺源县| 繁峙县| 晋宁县| 根河市| 怀仁县| 重庆市| 延边| 西吉县| 仪征市| 长岭县| 奎屯市| 乌兰浩特市| 海丰县| 潮安县| 新乐市| 拉萨市| 太保市| 康马县| 修水县| 兴安盟| 山东| 克山县| 聂拉木县| 临颍县| 宜兰县| 永春县| 禹州市| 临汾市| 汝城县| 万源市| 拉孜县| 凤山市| 读书| 巫溪县| 永宁县| 肇东市| 邮箱| 历史| 沁阳市| 淮滨县| 江源县|