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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 在开启MySQL PerformanceSchema 性能收集功能的情况下,对数据库性能影响

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

测试环境:

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

image

测试步骤:

一:数据库及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)是默认不开启定况下的测试
image

image

五:结论
当前环境下三轮测试结果可以看出,数据库性能随并发量的变化而变化
(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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
29天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
29天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
1月前
|
安全 测试技术
BOSHIDA DC电源模块的安全性能评估与测试方法
BOSHIDA DC电源模块的安全性能评估与测试方法
 BOSHIDA DC电源模块的安全性能评估与测试方法
|
1月前
|
安全
DC电源模块的安全性能评估与测试方法
DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面: 1. 输入安全性测试:包括输入电压范围、输入电压稳定性、输入电流范围、输入电流保护等方面的测试。测试方法可以是逐步增加输入电压或输入电流,观察模块的工作状态和保护功能。
DC电源模块的安全性能评估与测试方法
|
2月前
|
安全 关系型数据库 MySQL
mysql安全性能
mysql安全性能
37 10
|
20天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
20天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
1天前
|
关系型数据库 MySQL 中间件
【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测
【4月更文挑战第19天】在高并发环境下,死锁发生在多个线程间循环等待资源时,导致无限期等待。MySQL中,死锁可通过`innodb_lock_wait_timeout`参数设置超时或`innodb_deadlock_detect`开启死锁检测来解决。默认的50s超时可能不适用于在线服务,而频繁检测会消耗大量CPU。应对热点行更新引发的性能问题,可以暂时关闭死锁检测(风险是产生大量超时),控制并发度,或通过分散记录减少锁冲突,例如将数据分拆到多行以降低死锁概率。
16 1
|
17天前
|
测试技术
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第6天】 在软件开发的生命周期中,确保代码质量和性能始终是至关重要的环节。白盒测试作为一种深入代码内部的测试方法,提供了对程序结构、逻辑路径和内部功能的全面评估。本文将探讨白盒测试的核心概念、技术及其在提升软件质量与性能方面的应用。通过分析控制流测试、数据流测试和静态代码分析等关键技术,我们揭示了白盒测试如何有效发现潜在缺陷,优化代码效率,并增强系统稳定性。