2016-10-23 7 views
1

大量のクエリを受け取る大規模なmysqlデータベースを持っていますが、各クエリの実行には約5〜10秒かかります。大規模なクエリキューを引き起こす同時のmysqlクエリ

クエリには、レコードの確認、レコードの更新、レコードの追加が含まれます。

私は、現在のクエリがこれらの受信クエリにアクセスする必要があるレコードを使用している間、受信クエリが「キュー」する必要があると考えているクエリ実行でいくつかのボトルネックが発生しています。

データベース構造とSQLクエリを完全に再フォーマットするだけでなく、クエリによるデータベースレコードの同時使用を可能にする方法はありますか?

答えて

1

INSERT、UPDATE、またはDELETE操作は、操作が完了するまで、関連する表(myISAMまたは行-InnoDB)をロックします。 ...このタイプのクエリをしっかりとコミットしていることを確認し、また、あなたがMySQLの内部のロックを参照してください。..

探し関連して一部を分離transacationためchechck:https://dev.mysql.com/doc/refman/5.5/en/internal-locking.html

またその覚えMySQLでdifferenteストレージがあります異なる機能を持つエンジン例えば:

MyISAMストレージエンジンは、指定の表の読者と作家の間 競合を減らすために同時挿入をサポートしています。MyISAMテーブル 表が途中でデータファイル(削除された行には穴がない場合)、 INSERTステートメントを実行して、 の末尾に行を追加すると同時に、SELECTステートメントが テーブルの行を読み取っているときに行を追加することができます。 https://dev.mysql.com/doc/refman/5.7/en/concurrent-inserts.html

結局https://dev.mysql.com/doc/refman/5.7/en/optimization.html

を見てみましょう
関連する問題