测试开启MySQL performance_schema后对性能的影响

在开启MySQL PerformanceSchema 性能收集功能的情况下,对数据库性能影响。

测试环境:

MySQL版本:percona5.6.37
压测工具:sysbench
基础数据量:100W
压测时长:1200S
压测类型:OLTP
线程数:10/25/40
是否开启PerformanceSchema:是/否/部分开启

测试步骤:

一:数据库及sysbench部署(略)
二:压测脚本
# 准备数据
sysbench --mysql-port=3308 --mysql-user=tpcc --mysql-password=tpcc --test=tests/db/oltp.lua --oltp_tables_count=3 --oltp-table-size=1000000 --rand-init=on prepare --mysql-socket=/opt/mysql/run/mysql.sock

# 测试
sysbench --mysql-port=3308 --mysql-user=tpcc --mysql-password=tpcc --test=./tests/db/oltp.lua --num-threads=10 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=1200 --max-requests=0 --percentile=99 run --oltp_tables_count=3 --mysql-socket=/opt/mysql/run/mysql.sock

# 清理压测环境
sysbench --mysql-port=3308 --mysql-user=tpcc --mysql-password=tpcc --test=tests/db/oltp.lua --oltp_tables_count=3 --oltp-table-size=1000000 --rand-init=on cleanup --mysql-socket=/opt/mysql/run/mysql.sock
三:PS开启方法
# 默认不开启
[mysqld]
performance_schema=OFF

# 开启
[mysqld]
performance_schema=ON
# 重启数据库

# The setup_instruments table lists classes of instrumented objects for which events can be collected
# 只开启线程事件监控功能

SELECT * FROM setup_instruments WHERE NAME LIKE 'statement/%';
update  setup_instruments set ENABLED='NO',TIMED ='NO' ;
update  setup_instruments set ENABLED='YES',TIMED ='YES' WHERE NAME LIKE 'statement/%';

#The setup_consumers table lists the types of consumers for which event information can be stored and which are enabled:
#开启需要监控的事件类型

update setup_consumers  set ENABLED ='NO';
update setup_consumers set ENABLED ='YES' WHERE NAME LIKE 'events_statements_current';
update setup_consumers set ENABLED ='YES' WHERE NAME LIKE 'statements_digest';
update setup_consumers set ENABLED = 'YES' where name like '%instrumentation';

#The setup_timers table shows the currently selected event timers
#多久收集一次事件信息

SELECT * FROM setup_timers WHERE NAME = 'statement';

四:压测结果收集
收集信息包括压测并发线程数thread,每秒平均事务数trx ,平均每秒读r,平均每秒写w
首先是在开启PS情况下的测试(01),(02)是默认不开启定况下的测试

五:结论
当前环境下三轮测试结果可以看出,数据库性能随并发量的变化而变化
(1)不开启PS的情况下,数据库性能还未到达瓶颈;
(2)开启PS的情况下,数据库过早地到达了性能瓶颈,且相对有10%左右的损耗
(3)当前只开启了PS的事件检测功能,性能就有了损耗,若想开启其他类型的监控,请以当前业务环境类型进行压测,决定是否开启PS。

参考资料:
https://dev.mysql.com/doc/refman/5.6/en/performance-schema-table-descriptions.html
https://dev.mysql.com/doc/refman/5.6/en/events-statements-current-table.html
https://dev.mysql.com/doc/refman/5.6/en/setup-instruments-table.html

时间: 2025-01-31 02:10:52

测试开启MySQL performance_schema后对性能的影响的相关文章

如何开启MySQL的远程帐号

   Mysql是一个多线程的,结构化查询语言(SQL)数据库服务器.SQL 在世界上是最流行的数据库语言.MySQL 的执行性能非常高,运行速度非常快,并非常容易使用.是一个非常捧的数据库. 下载地址:    MYSQL    开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口.    MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的.    如果您在安装 MySQL

用PHP连mysql和oracle数据库性能比较

mysql|oracle|比较|数据|数据库|性能 用PHP连mysql和oracle数据库性能比较 测试硬件说明:测试使用的是我的爱机,配置如下:CPU:C433内存:128M硬盘:酷鱼2代20G 测试软件说明:WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,m

开启mysql和php慢日志方法

开启mysql慢日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.long_query_time的默认值为10,意思是运行10s以上的语句.默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响.慢查询日志支持将日志记录写入文件,也支持将

大数据量下MySQL插入方法的性能比较

文章讲的是大数据量下MySQL插入方法的性能比较,不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,本文旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方法的选择. 插入分析 MySQL中插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: ·连接:(3) ·发送查询给服务器:(2) ·分析查询:(2) ·插入记录:(1x记录大小) ·插入索引:(1x索引) ·关闭:(1) 如果我们每插入一条都

用PHP连mysql和oracle数据库性能比较_php基础

测试硬件说明: 测试使用的是我的爱机,配置如下: CPU:C433 内存:128M 硬盘:酷鱼2代20G 测试软件说明: WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5 linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,mysql 3.22.32 测试代码说明: 使用一个很简单的表,mysql和oracle使用

使用facebook linkbench 测试PostgreSQL社交关系图谱场景性能

facebook linkbench 测试PostgreSQL社交关系图谱场景性能 作者 digoal 日期 2016-09-11 标签 PostgreSQL , facebook , linkbench 背景 Linkbench是facebook提供的一款数据库性能测试开源软件,它的思路是围绕社交关系图谱构建一套测试数据,然后在此基础之上对数据进行关系查询,新增关系,断开关系等操作. Linkbench的介绍可参考https://www.facebook.com/notes/facebook-

MySQL使用profile查询性能的操作教程_Mysql

MYSQL的profiling功能要在Mysql版本5.0.37以上才能使用. 查看profile是否开启 mysql> show variables like '%profil%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | profiling | OFF | --开启SQL语句剖析功能 | profiling_history_size |

PHP连mysql和oracle数据库性能比较

使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下: mysql的表结构: CREATE TABLE board (    board_id smallint(6) NOT NULL auto_increment,    board_name char(16) NOT NULL,    board_manager char(20),    PRIMARY KEY (board_id) ); oracle的结构: CREATE TABLE PHP_ORACL

MySql删除和更新操作对性能有影响吗_MsSql

删除和更新操作的开销往往比插入高,所以一个好的设计需要减少对数据库的更新和删除操作. 3.1更新操作 数据库的更新操作会带来一连串的"效应":更新操作需要记录日志(以便错误时回滚):更新可变长字段(如,varchar类型)会带来数据物理存储的变化(记录的移动):更新索引字段会导致索引重建:更新主键会导致数据重组等.这一切不但会造成更新操作本身效率低,而且由于磁片碎片的产生会造成以后查询性能的降低.为了应对这一情况,有两种策略:一.减少更新次数,把多个字段的更新写到同一个语句里:二.避免