高质量解读《高性能mysql》——第2章MySQL基准测试

前言:

高效读书,一张逻辑图带你读懂、读薄书中重点。

深入学习MySQL系列,解读的目的是为了把书读薄,抽出重点进行梳理、理解、运用。因大量文字很容易让人觉得枯燥无味,为此博主花费一定精力和时间整理输出为逻辑思维图,以便大家学习和参考。

--------------------------------------------------------------------------------------
注:下面文字只是对逻辑思维图的”翻译“,节省时间,只看图即可。

目录

MySQL基准测试思维逻辑图 

为什么需要基准测试

基准测试的策略

基准测试的方法

基准测试的工具

基准测试的案例

总结


MySQL基准测试思维逻辑图 

高质量解读《高性能mysql》——第2章MySQL基准测试_第1张图片

为什么需要基准测试

基准测试(benchmark)是MySQL新手和专家都需要掌握的一项技能)

什么叫基准测试

基准测试是针对系统设计的一种压力测试(就是 看看机器能扛住多大的吞吐量)

基准测试可以干成的事

  • 观察系统在不同压力下的行为,评估系统的容量
  • 模拟比当前系统更高的负载,以便找出系统可能遇到的扩展性瓶颈
  • 测试硬件配置等

基准测试的压力与真实压力

  • 真实压力是不可预期而且变化多端的,实际情景可能会更加复杂
  • 重点:基准测试通常要求尽可能快地执行完成

结论

  • 只能进行大概的测试,来确定系统大致的余量有多少
  • 基准测试要尽量简单直接,结果之间容易相互比较,成本低且易于执行

基准测试的策略

两种主要的策略

针对整个系统的整体测试

  • 测试整个应用系统(Web服务、组件、网络和数据存储),用户关心的是整体的性能
  • MySQL并非总是应用的瓶颈
  • 便于发现各部分之间的交互带来的影响
  • 更能揭示应用的真实表现

单独测试MySQL

  • 需要比较不同查询的性能
  • 有针对性的具体测试
  • 做快速的短期的基准测试,做快速的“周期循环”

测试何种指标

  • 吞吐量
  • 响应时间或者延迟
  • 并发性
  • 可扩展性

基准测试的方法

设计和规划基准测试

第一步提出问题并明确目标,接着决定是采用标准的基准测试,还是专用的测试

设计专用的基准测试一般需要一个迭代过程

  • 获得生产数据集的快照
  • 针对数据运行查询
  • 在不同级别记录查询(比如同时查询http请求日志,MySQL的查询日志)
  • 写测试规划,记录每一轮测试详细记录

基准测试应该运行多长时间

可以尝试让测试一直运行,持续观察直到确认系统已经稳定

获取系统性能和状态

建议一个目录,每次执行一轮测试创建单独的子目录,记录测试详情(性能指标:CPU使用率、磁盘I/O、网络流量统计、SHOW GLOBAL STATUS计数器)

获得准确的测试结果

  • 选择哪种测试标准(I/O密集型、CPU密集型、还是内存密集型)
  • 确认测试结果是否可重复
  • 每次测试中,修改的参数应该尽量少
  • 如果测试中出现异常结果,要查找根本原因

运行基准测试并分析结果

自动化基准测试

绘图的重要性

比如将性能指标按照时间顺序绘制

基准测试的工具

集成式测试工具

  • ab
  • http_load
  • JMeter

单组件式测试工具

  • mysqlslap
  • sql-bench
  • Super Smack
  • Database Test Suite
  • TPCC-MySQL
  • sysbench

基准测试的案例

http_load

MySQL基准测试套件

sysbench

数据库测试套件中的dbt2 TPC-C测试

Percona的TPCC-MySQL测试工具

总结

基准测试是用来解决业务问题的一种实践行动

基准测试是一种很好的学习方法

  • 学习如何将问题分解成可以通过基准测试来获得答案的方法(类似数学上根据文字题目推导出方程式)
  • 先正确描述问题,选择合适的基准测试来解答问题,设置基准测试的持续时间和参数,运行测试,收集数据,分析结果数据

基本学习

  • 至少要熟悉sysbench
  • 学习使用oltp和fileio测试
  • 文件系统和磁盘基准测试 

制定一些原则

  • 选择一些合适的测试工具并深入学习
  • 可以建立一个脚本库,用于配置基准测试,收集输出结果、系统性能和状态信息,以及结果分析
  • 使用一种熟练的绘图工具如gnuplot或者R

以上内容均为博主原创手码梳理。码字不易,但只要能提高,都是值得的。如果您觉得,这篇文章对您的基础知识学习、巩固、提高有帮助,欢迎点赞、分享、收藏,谢谢。 --天天water

你可能感兴趣的:(高质量解读《高性能mysql》)