数据库性能测试(mysql)

常见的数据库指标包括

TPS/QPS:衡量吞吐量。(TPS:每秒事务处理量(TransactionPerSecond)、每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准)
响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。
并发量:同时处理的查询请求的数量。

为什么不要问我DB极限QPS/TPS

为什么不要问我DB极限QPS/TPS
参考URL: https://www.cnblogs.com/zhiqian-ali/p/6336521.html

极限法;我们假设两种极限场景:
极限场景一,所有SQL 都是主键等值查询。
极限场景二,所有SQL 都是走不上索引的全表扫描。
这两种场景下大家都能够一眼看出数据库的支撑能力,在场景一和场景二下会有很大的差别。当然,我们现实的业务场景,位于两种极限场景之间,这个时候很难简单粗暴的说当前实例可以支撑多少业务量,因为缺少信息输入。

mysql查看性能常用命令

参考URL: https://blog.csdn.net/zhangyunsheng11/article/details/80014457

1、查看mysql版本号:select version();
2、查看mysql存储引擎:show engines;
3、查看mysql的缓冲池大小配置:show variables like 'innodb_buffer_pool_size' ;
缓冲池大小,一般设置为机器的物理内存的80%
4、show variables like 'innodb_io%';
5、慢查询:show variables like '%slow%';
slow_query_log = on 打开了慢查询日志,执行时间超过2秒的即为慢查询
6、最大连接数:show variables like 'max_connections';
查询一下服务器响应的最大连接数(MySQL服务器过去的最大连接数是)
show global status like 'Max_used_connections';
7、进程使用情况:show global status like 'Thread%';
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器thread_cache_size配置:
show variables like 'thread_cache_size';
8、查询缓存:show global status like 'qcache%';
MySQL查询缓存变量解释:
  Qcache_free_blocks:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
  Qcache_free_memory:缓存中的空闲内存。
  Qcache_hits:每次查询在缓存中命中时就增大
  Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
  Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)
  Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
  Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。
  Qcache_total_blocks:缓存中块的数量。
我们再查询一下服务器关于query_cache的配置:show variables like ‘query_cache%’;
各字段的解释:
  query_cache_limit:超过此大小的查询将不缓存
  query_cache_min_res_unit:缓存块的最小大小
  query_cache_size:查询缓存大小
  query_cache_type:缓存类型,决定缓存什么样的查询,示例中表示不缓存 select sql_no_cache 查询
  query_cache_wlock_invalidate:当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。
  query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费。
  查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
  如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。
  查询缓存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%
  查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
  查询缓存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%

9、排序使用情况:show global status like 'sort%';
Sort_merge_passes 包括两步。MySQL 首先会尝试在内存中做排序,使用的内存大小由系统变量 Sort_buffer_size 决定,如果它的大小不够把所有的记录都读到内存中,MySQL 就会把每次在内存中排序的结果存到临时文件中,等 MySQL 找到所有记录之后,再把临时文件中的记录做一次排序。这再次排序就会增加 Sort_merge_passes。实际上,MySQL 会用另一个临时文件来存再次排序的结果,所以通常会看到 Sort_merge_passes 增加的数值是建临时文件数的两倍。因为用到了临时文件,所以速度可能会比较慢,增加 Sort_buffer_size 会减少 Sort_merge_passes 和 创建临时文件的次数。但盲目的增加 Sort_buffer_size 并不一定能提高速度
10、打开的文件数:show global status like 'open_files';
show variables like 'open_files_limit';
比较合适的设置:Open_files / open_files_limit * 100% <= 75%

11、表锁情况:show global status like 'table_locks%';
Table_locks_immediate表示立即释放表锁数,Table_locks_waited表示需要等待的表锁数,如果Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些。

MySQL基准测试

关于mysql5.7的160万qps
参考URL: https://blog.51cto.com/weikle/1789595

为什么要做mysql基准测试

Mysql基准测试
参考URL: https://blog.csdn.net/fsx2550553488/article/details/80927933

例如我们拿到了一台服务器,准备做为数据库服务器,那么这台服务器的硬件资源能够支持多大的访问压力呢?优化了操作系统的内核参数后,是否提升了性能?调整了Mysql配置参数后,对性能有多少影响?……

通过一系列的调优工作,配合基准测试,就可以把这台服务器调整到最佳状态,也掌握了健康状态下的性能指标。

以后在实际运行过程中,当监控的数据接近了基准指标时,说明数据库服务器快要满负荷了,需要分析是数据库结构设计、SQL语句这类用法问题,还是硬件资源的确不够了,然后进行相应的处理。

数据库服务器也可能需要硬件升级,升级之后也需要进行基准测试,和之前的测试结果对比,确保升级后的性能是提升的,防止不恰当的升级或者错误的配置引起性能下降。

Mysql性能测试工具 mysqlslap

mysqlslap,mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具,该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。

mysqlslap 的一个主要工作场景就是对数据库服务器做基准测试。

sysbench

sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持Lua 脚本语言,Lua 对于各种测试场景的设置可以非常灵活。sysbench 是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。(节选自《高性能MySQL》)

总结:网上利用该工具的文章的比较多,应该算是主流工具,推荐使用该工具。

参考

性能测试之mysql监控、优化
参考URL: https://www.cnblogs.com/xiaowenshu/p/10455309.html
MySQL性能基准测试对比:5.7 VS 8.0
参考URL: https://www.cnblogs.com/qcloud1001/p/10488735.html

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要使用Loadrunner测试Mysql数据库性能,需要遵循以下步骤: 1. 安装Loadrunner软件,并在Loadrunner中打开Vugen(Virtual User Generator)。 2. 在Vugen中创建一个新的脚本,并选择协议类型为ODBC。 3. 配置ODBC数据源,以便与Mysql数据库建立连接。 4. 在脚本中添加数据库操作,比如插入、更新、查询等。 5. 设置负载测试参数,如虚拟用户数、持续时间、并发请求数等。 6. 运行负载测试,收集性能数据。 7. 分析性能数据,发现潜在的性能瓶颈,并进行优化。 需要注意的是,在进行负载测试前,要确保Mysql数据库已经正确地配置和优化,以避免测试结果受到数据库本身的限制。另外,负载测试要在生产环境之外进行,以避免对实际业务造成影响。 ### 回答2: 运用Loadrunner对MySQL数据库进行性能测试是一种常见的方法。Loadrunner是一款功能强大的性能测试工具,可以模拟多个用户同时对MySQL数据库进行读写操作,以评估数据库在高负载情况下的性能表现。 首先,需要创建一个测试场景,包括模拟用户的行为和操作,例如数据库查询、插入、更新和删除等操作。然后,设置虚拟用户数量和并发数,以模拟实际应用场景下的负载。 其次,配置数据库连接参数,包括数据库服务器地址、端口号、用户名和密码等。Loadrunner可以使用自带的数据库协议模拟真实的数据库请求,通过执行SQL语句向数据库发送请求。 接下来,使用Loadrunner的脚本编辑器编写脚本,包括数据库连接、查询、更新等操作。可以通过录制脚本的方式,将用户的操作转化为脚本,或者手动编写脚本以模拟特定的数据库操作。 一旦脚本编写完成,可以开始进行性能测试。Loadrunner可以按照预先设定的虚拟用户数量和并发数,同时运行多个用户脚本,模拟多个用户对数据库进行操作。 在测试运行期间,Loadrunner会收集各种性能指标,例如响应时间、吞吐量、并发数等。通过分析这些指标,可以评估数据库性能,并找出潜在的性能瓶颈。 最后,可以根据测试结果进行优化和调整。通过不断重复测试、分析和优化的循环,可以提高MySQL数据库性能,提供更好的用户体验。[300字] ### 回答3: 使用LoadRunner测试MySQL数据库性能可以通过以下步骤进行: 1. 安装LoadRunner:首先,需要下载并安装LoadRunner软件,确保版本兼容并按照指示进行安装。 2. 创建脚本:在LoadRunner的Vuser脚本编辑器中,创建一个新的脚本来模拟对MySQL数据库的访问。脚本包括必要的代码和配置,例如数据库连接,查询语句等。 3. 参数化:通过参数化数据,可以模拟多个用户同时访问数据库。可以使用LoadRunner内置的参数化功能来实现。将脚本中的固定数据替换为参数,例如使用用户名、密码和查询语句等。 4. 创建虚拟用户:使用LoadRunner的“Virtual User Generator”创建虚拟用户,配置虚拟用户数量和行为。为每个虚拟用户分配不同的参数值,以模拟多个用户的并发访问。 5. 运行负载测试:使用LoadRunner的控制台或命令行界面来运行负载测试。在测试期间,LoadRunner会模拟多个虚拟用户并发地访问MySQL数据库,并且记录关键性能指标,如响应时间、吞吐量等。 6. 分析结果:在测试结束后,可以使用LoadRunner的分析工具来查看测试结果。可以生成图表和报告,以便更好地理解数据库性能,并识别潜在的性能瓶颈和问题。 需要注意的是,在进行MySQL数据库性能测试时,应确保测试环境的合理性和一致性。数据库服务器的配置、网络连接和负载情况等因素都可以对测试结果产生影响,因此应尽可能模拟真实的生产环境进行性能测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值