首页->正文

一则MySQL更新慢的问题

2012-02-28 -Web开发 标签: mysql

线上有个更新数据表记录的访问时间任务,从每天的运行日志中发现更新很慢,处理1w条记录大约花费了250s,平均每秒更新40次左右,感觉有些慢的不正常。况且表已经分成了多个,每个表的平均记录数在40w左右,而本地同样的表,更新能达到每秒7000次,相差170多倍(MySQL的性能看来还是很强大的,当然这个表行长度较小,结构也比较简单)。当然本地测试的时候为了方便,直接用了MySQL的query函数,而线上是通过一个类来操作的,但不可能因为这个数据库类就相差这么大吧。接着对比本地和线上的表结构,发现线上表的对应字段未建立索引,而MySQL UPDATE的时候是先根据WHERE中的字段查到对应的记录,再执行UPDATE。给线上对应表加上索引(应考虑对写入的影响),更新速度就立刻提升上去了。

所以在平时开发中除了注意功能的开发,更要加强对代码运行情况的监控,例如对关键任务增加监控,特别是涉及大量服务调用的部分,记录运行时间,消耗的内存等。还有就是注意观察MySQL的慢查询日志、未使用索引的查询记录。

而之前也有一次因为在代码中误加了session_start(),导致整个前端的缓存失效。总之,精心设计的程序架构,可能因为某一个环节的失误,导致系统出现瓶颈。保证功能的同时,一定要做好监控,及时发现问题。

下一篇 mongodb使用注意事项汇总

上一篇 Bloom Filter算法在php中的实现

相关文章

mysql、nginx权限设置不当导致的两则问题

mongodb使用注意事项汇总

文章分类

开发小提示

  • 1:Mongodb中通过db.yourCollectionName. dataSize()查看某个文档的大小
  • 2:linux下用reset命令恢复查看二进制文件导致的命令行乱码
  • 3:查看MySQL表的索引情况show index from tableName
  • 更多...

交流

  • wangnow(a)126.com