【案例】说说time_zone 带来的性能问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
一 背景  
   相信大家对time_zone参数的意义和使用方式并不陌生,MySQL 通过设置 time_zone来控制时区,不过本文从另外一个角度来了解该参数对系统性能的影响。认识到这个问题的起因是因为数据库出现usr cpu 增大,load 上升 ,thread running陡高等现象。还有另外一个同事发现的问题一个应用接口调用分布到不同的机器,但是性能存在差异。

二 分析过程
2.1 timezone的参数设置
我们常用的time_zone 有两种设置方式  SYSTEM  和UTC具体的时区比如+08:00,设置为SYSTEM表示数据库系统的时区和os 系统的时区一致。对于国内而言 我们一般选择东八区也即'+08:00' ,更加具体详细的信息请移步官方手册 time_zone  
2.2 性能压测

为了直观表现性能差异,这里使用mysqlslap 对同一个实例进行压测:80个并发会话 执行1000w次 select now()查询,得到不同参数模式下,消耗的时间。


[3306-RW-2Inst@rac1 ~]
 
$mysql -uroot -e 'select @@time_zone' 

+-------------+

| @@time_zone |

+-------------+

| SYSTEM |

+-------------+

[3306-RW-2Inst@rac1 ~]

$mysqlslap --no-defaults -uroot --create-schema=test -S/u01/my3306/run/mysql.sock --number-of-queries=10000000 --concurrency=80 ' --query=select now()' 

Benchmark

        Average number of seconds to run all queries: 47.706 seconds

        Minimum number of seconds to run all queries: 47.706 seconds

        Maximum number of seconds to run all queries: 47.706 seconds

        Number of clients running queries: 80

        Average number of queries per client: 125000 

结果说明 time_zone设置为SYSTEM时,80个并发会话查询1000w次 需要47.7秒。


[3306-RW-2Inst@rac1 ~]
 
$mysql -uroot -e 'select @@time_zone' 

+-------------+

| @@time_zone |

+-------------+

| +08:00 |

+-------------+

[3306-RW-2Inst@rac1 ~]

$mysqlslap --no-defaults -uroot --create-schema=test -S/u01/my3306/run/mysql.sock --number-of-queries=10000000 --concurrency=80 '--query=select now()' 

Benchmark

        Average number of seconds to run all queries: 30.039 seconds

        Minimum number of seconds to run all queries: 30.039 seconds

        Maximum number of seconds to run all queries: 30.039 seconds

        Number of clients running queries: 80

        Average number of queries per client: 125000 

结果说明 time_zone设置为+08:00时,80个并发会话查询1000w次 需要30秒, 性能明显比前者更好,有 30%+左右的提升
2.3 使用pt-pmp工具分析 
设置SYSTEM时 MySQL 比设置为+08:00 模式多了 一层时间转化的函数调用, __tz_convert,Time_zone_system::gmt_sec_to_TIME,gmt_sec_to_TIME,set_datetime导致cpu 使用率上升 ,sql执行时间变长 引发一些列的性能风暴效应。
$pt-pmp -p 150842
Sun Oct 11 16:10:05 CST 2015
61 __lll_lock_wait_private,_L_lock_2163,__tz_convert,Time_zone_system::gmt_sec_to_TIME,gmt_sec_to_TIME,set_datetime,Item_func_now::fix_length_and_dec,Item_func::fix_fields,setup_fields,JOIN::prepare,mysql_prepare_select,mysql_select,handle_select,execute_sqlcom_select,mysql_execute_command,mysql_parse,dispatch_command,do_handle_one_connection,handle_one_connection,start_thread,clone
搜索MySQL bugs 查看到一个 bug  中有一样的现象,设置为非系统默认的时区的性能比默认的高很多。

time_zone='SYSTEM'的pt-pmp 分析结果


time_zone='+08:00'的pt-pmp 分析结果


三 结论
 
  1  任何性能现象细致入微之后,满满的都是问题,需要细心深挖,探究问题本质。
  2  推荐大家将系统的time_zone修改为非默认值 ,比如+08:00 ,避免性能隐患。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
Oracle 网络协议 关系型数据库
Oracle会话超时设置1:在sqlnet.ora和listener.ora中设置
这篇文章是Oracle会话超时设置的第一个文章,简述和Oracle 数据库 net services有关的会话超时管理。
2084 0
Oracle会话超时设置1:在sqlnet.ora和listener.ora中设置
|
算法 关系型数据库 MySQL
TiDB保证数据一致性的策略与优势
【2月更文挑战第28天】TiDB作为一款分布式数据库,通过其独特的策略和优势,确保在分布式环境下数据的一致性。本章将详细探讨TiDB保证数据一致性的核心策略,包括其采用的分布式一致性协议、数据复制机制以及容错处理等方面,并阐述这些策略所带来的优势。通过理解TiDB的数据一致性保证机制,读者将能更深入地认识其作为分布式数据库的价值。
|
人工智能 运维 安全
世界级大模型群,进化阿里云服务器操作系统新范式
世界级大模型群,进化阿里云服务器操作系统新范式
350 13
|
SQL 关系型数据库 MySQL
MySQL 8.0:filesort 性能退化的问题分析
用户将 RDS MySQL 实例从 5.6 升级到 8.0 后,发现相同 SQL 的执行时间增长了十几倍。本文就该问题逐步展开排查,并最终定位根因。
|
存储 关系型数据库 大数据
MySql分区表性能测试及切换案例
随着业务的快速增长,数据库中表数据量迅速膨胀,业务高峰期开始出现慢SQL、锁表等性能问题,需要优化。结合切换成本与性能测试数据,我们选择通过将非分区表切换到分区表来降低数据库性能风险。 最后,我们在业务始终稳定运行的情况下完成了分区表的切换。
10162 0
|
SQL 关系型数据库 MySQL
性能提高20倍!MySQL排序引起的性能问题及解决方案
负责公司的用户收藏服务,收到调用方反馈有read time out的情况,进行排查发现是某用户收藏数量太多引起的(有业务设计上的问题,正常应只保留有限时间的收藏或者限制用户收藏的数量),一般用户收藏数是不超过100的,查询耗时是几毫秒,该用户收藏数2W+,查询耗时接近200毫秒。
4090 0
|
安全 关系型数据库 MySQL
MySQL里面的innodb_support_xa
在看innodb_support_xa之前我们要先看下什么是XA,什么是两阶段提交。 XA 一个协调分布式事务的标准接口,为了遵从ACID原则,允许多个DB参与事务。为了查看更多,请 Section 13.3.7, “XA Transactions”。
5977 0
|
存储 监控 AliSQL
RDS AliSQL 面向 Binlog 的性能优化大揭密(上)—— 极致 IO 优化
RDS MySQL使用AliSQL内核,为用户提供了MySQL所有的功能,同时提供了企业级的安全、备份、恢复、监控、性能优化、只读实例、Serverless等高级特性
3706 3
RDS AliSQL 面向 Binlog 的性能优化大揭密(上)—— 极致 IO 优化
|
Oracle Unix 关系型数据库
[INS-06006] Passwordless SSH connectivity not set up between the following node(s)
[INS-06006] Passwordless SSH connectivity not set up between the following node(s)
1896 0
|
SQL
C++11之正则表达式(regex_match、regex_search、regex_replace)
C++11之正则表达式(regex_match、regex_search、regex_replace)
479 0

热门文章

最新文章