【案例】说说time_zone 带来的性能问题-阿里云开发者社区

开发者社区> 北在南方> 正文

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

简介:
+关注继续查看
一 背景  
   相信大家对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 ,避免性能隐患。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【最佳实践】OSS开源工具ossutil-上传性能调优
经常碰到内部同学或者外部客户问ossutil关于并发上传性能的问题。本文简单描述下ossutil并发上传原理并举例说明。 用户可从这里获取ossutil。 官网:https://help.aliyun.com/document_detail/50452.html代码:https://github.com/aliyun/ossutil 参数 --recursive 上传文件到oss时,如果file_url为目录,则必须指定--recursive选项,否则无需指定--recursive选项。
5654 0
Data Lake Analytics助力加和科技广告智能业务 - 性能提升4倍+,临时业务需求承接率提升200%+
阿里云Data Lake Analytics助力加和科技广告智能业务 - 性能提升4倍+,临时业务需求承接率提升200%+
2241 0
SQL编码中注意的性能问题
1、选择合适的数据类型 为列选择最小化的数据类型 如果一列中的文本长度不一,使用VARCHAR而不是CHAR 不存储Unicode不要使用NVARCHAR或者NCHAR 如果一行的长度不超过8000,使用VARCHAR而不是TEXT 对于仅存数字的列要使用数字类型而不要用字符类型 不要使用字符串类型存储日期数据。2、谨慎使用触发器 保持触发器内的代码最小化 可能的情况下尽量
968 0
索引列顺序导致的性能问题
今天和大家分享一个很有意思的例子,关于索引列的顺序导致的性能问题。 发现数据库的性能比较差,CPU消耗很高,抓了一个awr,发现瓶颈在sql上,top 1的sql是一个很简单的update语句,没有复杂的条件和表关联。
575 0
18 个命令&工具帮你定位 Linux 性能问题
1.TopTop命令是一个性能监控程序,它按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。
1139 0
阿里云弹性高性能计算产品商业化正式发布
来自全国500多家企业申请试用,结合客户的体验需求和反馈意见,不断地改善和打磨,弹性高性能计算商业版有了很大的优化,在产品性能和体验上都有全新的升级。
3454 0
阿里云七代高主频实例为完美电竞提供极致性能
本案例主要介绍了,阿里云七代高主频实例如何为完美电竞提供极致性能和高稳定性。
274 0
+关注
640
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载