`

辨識 MySQL Slow Queries 的一般性原則

阅读更多

本文開始

由於 MySQL 的普及,我們不難發現有許多 MySQL 的非專業使用者,他們十分依賴 MySQL 進行日常營運但卻不想(也不打算)進一步的成為 MySQL 專家,對他們而言只要可以用就好了。當與 Query 相關的效能瓶頸出現時,這些使用者將沒有能力解決所糟遇的難題,因為在這世界上並不存在對於 Slow Query 的通用解決方案;你所糟遇到的所有情況都是獨一無二的。

此份文件並非技術文件,而是記載辨識 MySQL Slow Queries 的一般性原則。你不需要是 MySQL 專家、也不需要知道如何分析 Query,也可以懂得如何辨識出對系統效能產生最多影響的 Slow Query。一但你辨識出這些 Queries 後,你就可以求助於 MySQL 專家來解決此問題。



一、建立基準(Baseline)

在你對 MySQL Server 進行任何改變之前,一定要先建立目前 MySQL Server 的效能基準,不然的話你就無法得知後續對於 Server 的調校是否真的可以提升效能。要建立基準的最簡單方式就是使用 mysqlreport,你只要先讓 MySQL Server 至少先運作個一整天然後再使用 mysqlreport 產生分析報表即可掌握 Server 目前的運作狀況。如果你沒辦法讓 MySQL Server 至少運作個一整天,那麼產生出來的報表可能會具有偏誤、比較不具代表性。



二、評估基準

mysqlreport 所產生出來的報表包含有非常多的資訊,但我們目前只需要關注在其中三項即可。首先要看的是 "Read ratio" (line 6 or 7),它應該要低於 0.01,若它超過 0.01 你就必須要分配多一點的 RAM 給 MySQL Server 使用。務必要確定系統有足夠的 RAM 可使用,若系統整體的 RAM 使用量已超出負荷,然後你又調高 MySQL 可使用的 RAM 上限,將會造成 MySQL 不斷地進行 SWAP 而讓問題變得更嚴重。

接下來要看的是 "Slow" (line 16)。Slow 表示 Slow Queries 的數量,系統預設將執行時間超過 10 秒的 Query 判定為 Slow Queries,而這個項目的最後一個欄位之數值應該要低於 0.05,若它高於 0.30 你八成會發現系統有些很明顯的問題發生。我們必須要儘全力地去降低 Slow 的數值。

最後一個要注意的項目是 "Waited" (line 48),尤其是最後一個欄位的數值。這個數值表示 MySQL 需要等待以取得 Table Lock 的次數之多寡,通常這個數值會低於 10%,若是它超過 10% 通常是因為 Slow Queries 所造成的。

你並不需要了解這些數值所代表的詳細意義,但是它們的確讓我們對於 MySQL 的運作狀況有一個整體的概念。若是這些數值偏高,那麼負責處理這些問題的 MySQL 專家將可以很容易的就找出問題點;但若是這些數值偏低,但 MySQL Server 卻運作的十分沒有效率,MySQL 專家們應該還是可以找出確切的問題點。



三、記錄 Slow Queries 並且等待

MySQL 預設並不會記錄 Slow Queries,你必須要修改 MySQL Server 的系統設定檔,例如 /etc/my.cnf:
引用:
[mysqld]
log-slow-queries
long_query_time = 1
重新啟動 MySQL 並且等待至少一整天的時間,MySQL 將會記錄所有執行時間超過一秒的 Slow Queries。Slow Query Log 的檔案名稱預設是 slow_queries,它們會存在 MySQL 的 Data Dir 之中,若是你不知道 MySQL Data Dir 在什麼地方,可以在登入 MySQL 指用以下的指令來找出:"SHOW VARIABLES LIKE 'datadir';"。在 Linux 系統中它通常會是 /var/lib/mysql/,因此 Slow Query Log 就會是 /var/lib/mysql/slow_queries.log。



四、辨識出 Top 10 Slow Queries

要辨識出 Top 10 Slow Queries 的最簡單方式就是使用 mysqlsla 來分析 slow loq,你可以將 mysqlsla 所產生出來的報表交給 MySQL 專家,讓它們協助你解決問題。在大部份的情況下,就算是只有 Top 3 的 Slow Queries 可以被克服,MySQL Server 的整體效能仍然可能會有大幅度的提升。從這裡開始,之後的工作就要交由 MySQL 專家來處理。



五、確認系統效能是否已改善

假設您的 MySQL 專家具有解決 Top Slow Queries 的能力,那麼你的最後工作就是確認系統效能已確實的改善。重新啟動 MySQL 並且讓它至少執行個一整天,再以 mysqlreport 來評估系統的運作效能,然後再將結果與之前的報表做比較,尤其注意第二步驟中所提到的那三個項目(Read ratio, Slow, and Waited)。這三個項目的值應該會很顯著的降低才是,若沒有,則進一步的向您的 MySQL 專家詢問,他們將會告訴你為什麼這不是一個可以輕易達成的 "simple fix"。



事先告知

當你的 MySQL Server 順利的運轉了幾個星期之後同樣的問題卻再度發生時,不要覺得驚訝,因為效能的調校往往牽涉到許多複雜的層面,而不是單一的問題。當你今日解決了 MySQL 的效能問題後,有可能在幾個月後你會需要再重新進行一次整個步驟,這不是 MySQL 的錯,而是 "成長" 所造成的負作用。有可能只是單純的因為你的資料庫使用者發現 MySQL 運作的更順暢,因此他們就更頻繁的使用,而更頻繁的使用就再度的加重系統的負載。當越多的負載加諸在您的 MySQL Server 上時,自然就需要越多的效能調校。
分享到:
评论

相关推荐

    风险辨识基本原则及常用方法介绍.pdf

    以下是关于风险辨识的基本原则和常用方法的详细说明: 一、风险辨识的基本原则 1. 全面周详的原则:风险辨识要求全面考虑所有可能影响企业运营的风险因素,包括财产损失、间接损失和责任损失。全面了解风险的概率...

    系统辨识-系统阶次的辨识

    根据提供的标题、描述、标签及部分内容,我们可以提炼出关于“系统辨识—系统阶次的辨识”的相关知识点。下面将详细阐述这些知识点。 ### 一、系统辨识概述 系统辨识是一种从输入输出数据中估计系统模型参数的方法...

    传递函数的时域辨识.ppt_传递函数辨识_传递函数_matlab_系统辨识_

    2. **数据预处理**:包括去除噪声、异常值检测和滤波,以提高辨识结果的准确性。 3. **模型结构选择**:根据系统特性选取合适的模型结构,如传递函数、状态空间模型等。 4. **参数估计**:利用MATLAB中的辨识函数...

    系统辨识及matlab仿真_仿真_系统辨识_

    6. **误差分析与优化**:系统辨识过程中,如何处理噪声和不确定性是关键。书中可能会讨论误差分析方法,如残差分析,以及如何通过调整模型结构或参数优化来提高模型的精度。 7. **应用拓展**:系统辨识的应用不仅...

    参数辨识_辨识_辨识永磁_电机_电机参数辨识_永磁同步电机的参数辨识

    这些数据对于验证辨识结果的准确性至关重要,可以用来比较辨识出的参数与实际运行数据的吻合程度,从而评估辨识方法的有效性。 总的来说,参数辨识是永磁同步电机控制的关键步骤,通过最小二乘法在Simulink中的应用...

    参数辨识,电机参数辨识,matlab

    辨识过程可能需要多次迭代,以提高参数的精度和鲁棒性。 最后,辨识出的参数可以用于设计高性能的电机控制器,例如PID控制器或滑模控制器。这些控制器依赖于准确的电机模型来实现精确的转速控制、位置控制或者扭矩...

    Simulink系统辨识工具用户指南

    5. 模型分析:辨识得到模型后,用户可能还需要对模型进行进一步的分析,包括模型的频率特性分析、稳定性分析等。 用户指南强调了Simulink系统辨识工具箱7的使用方法,同时提到该工具箱可以在MathWorks的官方网站上...

    《过程辨识》-方崇智

    本书系统地论述了辨识的理论和各种辨识方法,分析了各种方法的统一性,并介绍了辨识技术的实际应用。本书包括辨识的一些基本概念,随机信号的描述与分析,过程的数学描述,经典的辨识方法等共17章。

    过程辨识 系统辨识

    过程辨识与系统辨识是控制工程和自动化领域中的核心概念,主要涉及如何从实际系统的输入和输出数据中,推断出系统的行为模型。在这个领域,方崇智是一位知名的专家,他的研究和教学成果对这一学科的发展有着显著的...

    anchuan.zip_安川_惯量_惯量辨识_转动惯量_转动惯量辨识

    惯量辨识技术允许驱动器根据实际负载条件调整其控制参数,从而提高系统的稳定性和效率。通过这一过程,驱动器可以更准确地模拟电机与负载之间的动力传递,减少由于惯量不匹配造成的振荡和不稳定现象,确保系统的精确...

    系统辨识级模型阶次辨识

    在系统辨识中,我们希望找到一个既能捕捉系统行为又能保持计算简单性的最佳阶次。高阶模型可以更好地拟合数据,但可能会导致过拟合,而低阶模型则可能无法充分描述系统的复杂动态。 课件中可能详细讲解了以下内容:...

    PMSMidentRLS.rar_RLS_参数辨识电机_在线参数辨识_永磁电机参数_电阻辨识

    在实际应用中,为了确保电机运行的稳定性和优化控制策略,通常需要对电机的参数进行精确辨识。本资料“PMSMidentRLS.rar”提供了一个基于最小二乘法(RLS,Recursive Least Squares)的在线参数辨识MATLAB仿真模型,...

    suijixingjiaozheng.rar_MATLAB程序_参数辨识_系统辨识_随机性校正_随机性辨识

    总的来说,这个MATLAB程序包提供了一种工具,用于处理具有随机性成分的系统辨识问题,它可以帮助研究人员和工程师更有效地从实验数据中提取出系统的动态特性,并且对含有噪声的数据进行校正,提高模型的可靠性和准确...

    风险辨识基本原则及常用方法介绍汇编.pdf

    在《风险辨识基本原则及常用方法介绍汇编》中,主要阐述了风险辨识的一些基本原则和实践方法。 首先,风险辨识遵循的原则包括全面周详、综合考察、量力而行和科学计算。全面周详原则强调了识别风险时需要覆盖所有...

    bianshi2_matlab_参数辨识_二阶系统_bianshimatlab_二阶系统辨识_源码

    4. 模型验证:用辨识出的参数构建的模型预测新的输入输出数据,检查模型的准确性和适用性。 在提供的压缩包中,“bianshi2”很可能是一个MATLAB脚本或函数文件,包含了整个参数辨识过程的实现。这个文件可能包括...

    系统辨识参数辨识matlab程序

    系统辨识参数辨识 Matlab 程序 系统辨识是系统分析和设计的重要步骤,通过系统辨识可以获取系统的模型参数和脉冲响应函数。本文档主要介绍了系统辨识的 Matlab 程序,通过使用伪随机信号作为输入,应用相关分析法...

    MATLAB_RLS_参数辨识_最小二乘法Matlab编程_系统辨识_

    在MATLAB环境中,参数辨识和最小二乘法是数据建模和系统分析的重要工具。本文将深入探讨这两种方法,并结合提供的RLS01.m和RLS02.m代码文件,解析它们在实际应用中的实现。 首先,让我们理解什么是参数辨识。参数...

    子空间辨识(ABCD),子空间辨识方法,matlab

    2. **预处理**:数据可能需要进行去噪、滤波或归一化等预处理,以提高辨识结果的准确性。MATLAB中的信号处理工具箱可以用于这些任务。 3. **状态空间模型构造**:在MATLAB中,我们可以使用`subspace_identification...

    G11.rar_pso辨识_传递函数辨识_参数辨识,PSO_模型辨识_粒子群 simulink

    PSO粒子群算法,找到常减压装置传递函数,simulink搭建模型,辨识常减压装置传递函数参数

Global site tag (gtag.js) - Google Analytics