今天Facebook 的 MySQL发布下列关于 MySQL 性能:
今天,我们在一个完全意想不到的地方发现了一个性能问题 - 如果使用 TIMESTAMP 数据类型,并且 MySQL 配置为使用系统时区,它将影响 Linux C 库中具有全局互斥锁的代码。更糟糕的是,MySQL 的内部时区支持(使用 mysql.time_zone* 表)在单线程工作负载下快约 30%。使用 30 个客户端线程,MySQL 的内部时区转换速度快 30 倍。这一天一开始似乎是一个 MySQL 错误,但显然这是 MySQL 的胜利。-- domas
如何确定我的 MySQL 实例是否正在使用较慢的系统时区或是否正在使用较快的mysql.time_zone*
表?即我应该检查哪些 MySQL 配置参数?
(我们实际上使用 Amazon RDS 而不是托管我们自己的数据库,但是我认为除了检查之外,这并不重要my.cnf
,我需要使用 RDS 参数组来检查或更改配置变量。)
答案1
来自链接的文章
一旦你加载了文件(通过http://dev.mysql.com/.../时区支持.html),只需
time_zone
在中指定全局配置参数my.cnf
,或使用更改它SET GLOBAL ...
- 仍然不要忘记在中更改它my.cnf
。请注意,您可能还希望在所有从属服务器上执行此操作,因为不同的时区会使复制有点烦恼。
您可以使用以下方式确定 global.time_zone 设置
mysql> select @@global.time_zone;
+--------------------+
| @@global.time_zone |
+--------------------+
| SYSTEM |
+--------------------+
1 row in set (0.00 sec)