Mysql

監控大型數據庫上的慢查詢(Percona 5.6)

  • July 9, 2020

我正在尋找一種解決方案來監控非常大的生產數據庫(許多副本,超過 200 個表,一些表有 10-50 GB 的數據)和大量流量(大量查詢複雜性)。

主要目標是在應用程式碼更改後密切關注繁重的查詢。我們已經體驗到新程式碼引入了非最優 sql 查詢。

數據庫轉儲非常龐大,因此我們僅在暫存環境中使用範例。在這種情況下,幾乎不可能檢測到暫存的性能問題。

我考慮過使用 New Relic 之類的東西,但是對於如此龐大的基礎設施成本太高了,我不確定它是否會對性能產生負面影響。另一方面,我可以使用 MySQL 慢日誌。我在一些具有日誌速率限制的副本上啟用了它。一個月後,我沒有看到 I/O 速度影響,但我不確定是否為所有副本和主數據庫啟用它。我還發現了這篇文章http://blog.symedia.pl/2016/10/performance-impact-general-slow-query-log.html,它說了一些我過去讀過的不同的東西。

您將如何監控大型數據庫?

您可以使用pt-query-digest –processlist

雖然有四種不同的使用方式,恕我直言,使用它的最佳方式是每小時輪詢程序列表並收集指標。這種方法不需要慢查詢日誌。

我之前建議過這個(參見mysql 5.7 general_log table has user_host但文件沒有

這些年來,我多次宣傳這個想法

在我工作的最後一個地方,我在 100 多台生產伺服器上保持慢日誌執行——主伺服器和副本,有些大,有些小。基本上沒有缺點。

long_query_time = 1可能是一個很好的折衷方案——它可以擷取長時間執行的查詢,以及一些經常執行但執行緩慢的查詢。同時,它不會淹沒日誌文件。

pt-query-digest是查找“最差”查詢的好方法。我會專注於那些。

更多資訊: http: //mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog 它包括建議的設置。

引用自:https://dba.stackexchange.com/questions/270642