本文共 2587 字,大约阅读时间需要 8 分钟。
为了直观表现性能差异,这里使用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 查看到一个 中有一样的现象,设置为非系统默认的时区的性能比默认的高很多。 time_zone='SYSTEM'的pt-pmp 分析结果 time_zone='+08:00'的pt-pmp 分析结果 三 结论 1 任何性能现象细致入微之后,满满的都是问题,需要细心深挖,探究问题本质。 2 推荐大家将系统的time_zone修改为非默认值 ,比如+08:00 ,避免性能隐患。
转载地址:http://mvxax.baihongyu.com/