首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql性能测试

mysql性能测试
EN

Database Administration用户
提问于 2016-06-21 04:18:12
回答 2查看 1.3K关注 0票数 1

我们计划测试新的DB服务器的性能。为此,我们有以下计划:

  1. 获取生产sql查询
  2. 对不同的DB重放这些sql查询。

我计划使用pt-log-player来播放sql查询,并使用pt-query-digest来分析执行后从pt-log-player生成的结果文件。所以我的问题是:

  1. 如何首先获得生产查询。由于性能原因,启用慢速日志查询不是一个选项(因为我们的DB管理员拒绝这样做)
  2. 为什么不推荐pt-log-player,有什么bug或者背后的原因是什么。
  3. 或者有人可以建议我一个完全不同的工具集来做perf测试。谢谢。
EN

回答 2

Database Administration用户

发布于 2016-06-21 11:53:59

1)虽然我自己更喜欢tcpdump,但我会问为什么不启用慢速日志是因为它的开销并不大。对于合理的阈值,它实际上是非常有用的。

如果您想要非常谨慎,您可以使用一个保守的long_query_time安全地启用它,然后慢慢地放弃它。该变量是动态的,因此如果您遇到问题,可以动态地更改它。另外,根据服务器的风格(例如Percona),您可以设置日志_慢的_率_限制,这正是为此目的而设计的。

另一种方法是使用tcpdump,您可以在服务器、影子服务器(如果网络设置支持它)或应用服务器上使用它。然后可以使用pt-查询摘要从其中提取查询:

代码语言:javascript
复制
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt

这是一个非常多用途的解决方案,因此值得熟悉。

更多信息可以在https://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html上找到。

2)这只是一个假设,但是执行/重播查询的方式有很多种,所以我认为这就是放弃支持的原因。

3)如果您有查询,您还可以使用percona回放米斯基普系统工作台或任何其他工具来执行它们。如果你想写你自己的压力工具,我有一个网络请求回放代码的例子,可以给你一些想法。

票数 1
EN

Database Administration用户

发布于 2016-07-02 02:22:38

  1. 获取数据的快照。
  2. 打开“一般日志”以获得查询的完整列表。
  3. 一段时间后,关闭一般日志。(它迅速地填满了磁盘。)

棘手的部分是同时执行步骤1和步骤2。如果在服务器上设置了LVM,则可以接近“瞬时”。

当您打开日志时获取数据快照的原因是,否则查询可能会因为发生的更改(插入、删除、更新等)而失败。

至于DBA拒绝打开慢吞吞的日志-嗯,他是不必要的偏执。(在我以前的工作中,在所有数千台服务器上保持缓慢登录是一个标准过程。)

一般日志具有一定的I/O影响,而且填充磁盘的风险很小,但这是可以监视的。

在我看来,Slowlog是找到性能问题的“快速修复”的最佳方法。如果DBA只打开一个小时,您可能会给他一个改进,将CPU和/或I/O的使用减少一半。(有一次,我看到CPU从100%下降到2% -这是在一个SELECT上的一行变化:WHERE DATE(col) = '...' -> WHERE col = '...')

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/141773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档