1

最近我的 mysql 5.5.27 一直表现很差。我已经更改了配置中的几乎所有内容,以尝试看看它是否会在没有运气的情况下有所作为。我不断锁定表,每张表达到 6-9 个锁。我的选择查询永远需要 300 秒到 1200 秒。

将所有内容移至 PasteBin,因为它超过了 30k 个字符 http://pastebin.com/bP7jMd97

系统活动

90%UPDATESINSERTS 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 |
+---------+--------------+-------+------------+

我碰壁了,需要一些指导。谢谢!

4

1 回答 1

2

通过查看您的日志,问题似乎(我很确定您已经知道)是由于存在大量锁,因为数据量正在更新/选择/插入并且可能同时发生.

如果不首先了解您未提供的大量信息(例如表的大小、模式、硬件、配置、拓扑等),就很难给出性能提示——所以无论如何,这样一个广泛的问题可能不是最好的地方!

我会尽可能地保持我的回答通用,但可能要查看或尝试的事情是:

  1. 运行解释选择查询并确保它们有选择地查找数据而不是执行全表扫描或浪费大量数据
  2. 让服务器执行它的插入和更新,但创建一个用于报告的只读副本,这样数据就不会被锁定
  3. 如果您一次更新多行,请考虑使用提供的限制进行更新,以阻止如此多的数据被锁定
  4. 如果可以,请延迟插入以减轻压力
  5. 查看硬件修复(例如固态磁盘)以获得 IO 性能和更多内存,以便更多索引/数据可以保存在内存中或拥有更大的缓冲区
于 2013-02-22T09:19:40.417 回答