最近我的mysql 5.5.27的性能一直很差。我几乎更改了配置中的所有内容,试图看看它是否会有所不同。我经常把桌子锁起来,每张桌子锁6-9把。我的选择查询永远需要300秒-1200秒。
将所有内容都移到PasteBin,因为它超过了30k个字符http://pastebin.com/bP7jMd97
系统活动
90%UPDATES
和INSERTS
10%SELECT
我的慢速查询日志已备份。下面是我的mysql信息。如果有什么需要我补充的,请告诉我。
Server version 5.5.27-log
Protocol version 10
Connection XX.xx.xxx via TCP/IP
TCP port 3306
Uptime: 21 hours 39 min 40 sec
Uptime: 78246 Threads: 125 Questions: 6764445 Slow queries: 25 Opens: 1382 Flush tables: 2 Open tables: 22 Queries per second avg: 86.451
显示打开的表格
+----------+---------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+---------------+--------+-------------+
| aridb | ek | 0 | 0 |
| aridb | ey | 0 | 0 |
| aridb | ts | 4 | 0 |
| aridb | tts | 6 | 0 |
| aridb | tg | 0 | 0 |
| aridb | tgle | 2 | 0 |
| aridb | ts | 5 | 0 |
| aridb | tg2 | 1 | 0 |
| aridb | bts | 0 | 0 |
+---------+--------------+-------+------------+
我遇到了困难,需要一些指导。谢谢
从您的日志中查看,问题似乎是由于存在大量锁(我相信您已经意识到),给定了同时更新/选择/插入的数据量。
如果不首先了解大量您没有提供的信息,如表的大小、模式、硬件、配置、拓扑等,很难给出性能提示——因此,无论如何,这可能不是解决如此广泛问题的最佳场所!
我会尽可能地保持我的答案的通用性,但可能的做法是:
- 运行Explain the select query,并确保它们有选择地查找数据,而不是执行完整的表扫描或浪费大量数据
- 让服务器进行插入和更新,但创建一个用于报告的读取复制副本,这样数据就不会被锁定
- 如果一次更新多行,请考虑使用提供的限制进行更新,以阻止锁定太多数据
- 如果可以,请延迟插入以释放压力
- 查看硬件修复程序,如固态磁盘,以获得IO性能和更多内存,从而使更多索引/数据可以保存在内存中或具有更大的缓冲区