我最近将Drupal站点升级到多webhead环境,并尝试使用InnoDB引擎调整MySQL。我注意到SELECT查询在生产上比在暂存时更快,但UPDATE查询生产速度较慢。
我的系统管理员告诉我,延迟是由于1)远程数据库连接和2)两个数据库服务器之间的数据复制的二进制日志记录。
我是InnoDB和多服务器环境的新手。我想看看MySQL配置文件的输出是否确认了我的服务器设置,或者是否还有进一步优化生产MySQL服务器的空间。
这是我从登台和生产数据库运行的。我将数字列并排修改输出以进行比较。请注意,除了状态为“end”的行之外,查询在表中的每一行上的生产运行速度都会更快。 “结束”阶段是执行二进制日志记录的吗?
mysql> SET profiling = 1;
mysql> UPDATE node SET created = created + 1 WHERE nid = 100;
mysql> SHOW profile;
+----------------------+----------+------------+
| Status | Staging | Production |
+----------------------+----------+------------+
| starting | 0.000100 | 0.000037 |
| checking permissions | 0.000014 | 0.000006 |
| Opening tables | 0.000042 | 0.000017 |
| System lock | 0.000007 | 0.000004 |
| Table lock | 0.000009 | 0.000003 |
| init | 0.000076 | 0.000030 |
| Updating | 0.000062 | 0.000022 |
| end | 0.000031 | 0.002159 |
| query end | 0.000006 | 0.000003 |
| freeing items | 0.000010 | 0.000003 |
| closing tables | 0.000009 | 0.000002 |
| logging slow query | 0.000005 | 0.000001 |
| cleaning up | 0.000004 | 0.000001 |
+----------------------+----------+------------+
| Total | 0.000385 | 0.002288 |
+----------------------+----------+------------+
答案 0 :(得分:1)
你在赚钱。 “结束”状态将包括二进制日志记录。
对于最终状态,以下内容 可能正在发生行动:
- 更改表中的数据后删除查询缓存条目
- 将事件写入二进制日志
- 释放内存缓冲区,包括blob
http://dev.mysql.com/doc/refman/5.5/en/general-thread-states.html