博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL select now()的性能问题
阅读量:5795 次
发布时间:2019-06-18

本文共 1586 字,大约阅读时间需要 5 分钟。

问题描述

localtime函数会去调用/etc/localtime文件,对于大量并发的select now(),可以观察到明显的瓶颈(下面红色标注的函数)

26__lll_lock_wait_private(libc.so.6),_L_lock_2164(libc.so.6),__tz_convert(libc.so.6),Time_zone_system::gmt_sec_to_TIME(tztime.cc:1079),gmt_sec_to_TIME(tztime.h:60),set_datetime(tztime.h:60),Item_func_now::fix_length_and_dec(tztime.h:60),Item_func::fix_fields(item_func.cc:231),setup_fields(sql_base.cc:8229),JOIN::prepare(sql_resolver.cc:168),mysql_prepare_select(sql_select.cc:1054),mysql_select(sql_select.cc:1054),handle_select(sql_select.cc:110),execute_sqlcom_select(sql_parse.cc:5544),mysql_execute_command(sql_parse.cc:3033),mysql_parse(sql_parse.cc:6729),dispatch_command(sql_parse.cc:1634),do_handle_one_connection(sql_connect.cc:982),handle_one_connection(sql_connect.cc:898),pfs_spawn_thread(pfs.cc:1858),start_thread(libpthread.so.0),clone(libc.so.6)

localtime调用会去访问本地文件,引起底层库级别的锁冲突(类似bug#72701),对于高性能服务器,应该尽量避免调用localtime函数。之前FB的Domas也写了篇

Workaround

导入时区信息:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -S /u01/my3306/run/mysql.sock mysql

查看本机时区配置:

$cat /etc/sysconfig/clock

ZONE=”Asia/Shanghai”

然后以以下任意一种方式设置:

1).

mysql> set global time_zone=’Asia/Shanghai';

Query OK, 0 rows affected (0.00 sec)

2).在不导入时区配置的情况下(不调用mysql_tzinfo_to_sql ),直接设置时区:

mysql> set global time_zone = ‘+8:00′;

Query OK, 0 rows affected (0.00 sec)

3).在配置文件里添加:

default-time-zone=’Asia/Shanghai’

测试

主要测试SELECT NOW()的效率

mysqlslap –no-defaults -uxx –create-schema=test -h$host -P$port –number-of-queries=1000000000 –concurrency=100 –query=’select now()’

system time_zone: 15W QPS

显式指定中国时区“Asia/Shangehai”: 34W QPS

转载地址:http://uvdfx.baihongyu.com/

你可能感兴趣的文章
让前端小姐姐愉快地开发表单
查看>>
Dubbo笔记(四)
查看>>
Web前端JQuery入门实战案例
查看>>
Android开发教程 - 使用Data Binding(一) 介绍
查看>>
java B2B2C Springboot电子商城系统- SSO单点登录之OAuth2.0 登出流程(3)
查看>>
12月26日云栖精选夜读:CDN新品发布:阿里云SCDN安全加速开放公测
查看>>
USB 通信原理
查看>>
7zZip zip RAR iOS
查看>>
ssh无密码登陆远程主机
查看>>
date命令的详细用法!
查看>>
分布式存储ceph集群部署
查看>>
UiAutomator源码分析之UiAutomatorBridge框架
查看>>
python 开发之selenium
查看>>
Xcode3.2.5中找不到Mac OS X - Command Line Utility -...
查看>>
css的div垂直居中的方法,百分比div垂直居中
查看>>
线程sleep,join,yield的区别
查看>>
如何理解EM算法
查看>>
nginx 域名跳转一例~~~(rewrite、proxy)
查看>>
我的友情链接
查看>>
linux用户家目录无损迁移到独立硬盘
查看>>