1

最近、私のmysql5.5.27のパフォーマンスが非常に悪くなっています。設定のほぼすべてを変更して、運がなくても違いが生じるかどうかを確認しました。テーブルが常にロックされ、テーブルごとに6〜9個のロックに達しています。私の選択したクエリは永遠に300秒から1200秒かかります。

30k文字を超えたため、すべてをPasteBinに移動しました http://pastebin.com/bP7jMd97

SYSアクティビティ

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 |
+---------+--------------+-------+------------+

レンガの壁にぶつかったので、ガイダンスが必要です。ありがとう!

4

1 に答える 1

2

ログを見ると、問題は(ご存知のとおり)、更新/選択/挿入され、同時に可能なデータの量を考えると、大量のロックが存在することが原因であるように思われます。 。

テーブルのサイズ、スキーマ、ハードウェア、構成、トポロジなど、提供しない多くの情報を最初に知らずにパフォーマンスのヒントを提供することは非常に困難です。したがって、とにかく、このような幅広い質問にはおそらく最適な場所ではありません。

私はできる限り一般的な答えを維持しますが、見たり試したりする可能性のあることは次のとおりです。

  1. Explain the selectクエリを実行し、それらがデータを選択的に検索しており、全表スキャンを実行したり、大量のデータを浪費したりしていないことを確認します
  2. 挿入と更新はサーバーに任せますが、レポート用のリードレプリカを作成します。これにより、データがロックされなくなります。
  3. 一度に多くの行を更新する場合は、大量のデータがロックされるのを防ぐために提供された制限を使用して更新することを検討してください
  4. 可能であれば、インサートを遅らせて圧力を解放します
  5. ソリッドステートディスクなどのハードウェア修正を調べて、IOパフォーマンスとメモリを増やし、より多くのインデックス/データをメモリに保持したり、より大きなバッファを使用したりできるようにします。
于 2013-02-22T09:19:40.417 に答える