2016-10-26 21 views
0

私は2100万レコードを持つ1つのテーブルを持つデータベースで作業しています。データベースが作成され、挿入操作、更新操作、または削除操作がなくなると、データは一度ロードされます。 Webアプリケーションはデータベースにアクセスしてselect文を作成します。複数の同時選択をmysqlデータベーステーブル

現在、サーバーが応答を受信するために要求ごとに25秒かかります。しかし、複数のクライアントが同時要求を行っている場合、応答時間が大幅に増加します。このプロセスをスピードアップする方法はありますか?

固定最大行のInnoDBではなくMyISAMを使用しており、検索されたフィールドに基づいてインデックスが作成されています。

+0

誰かが「この質問は、研究活動を示し、それは便利かつ明確である」示唆upvotes ...それを私はNetflixの – Drew

+0

は、テーブル、クエリのパフォーマンスを向上させるために、適切にインデックスされていることを確認してください見て行きます。同時クエリーがたくさんある場合、サーバーは一度に多くの操作しかできないため、自然に処理が遅くなります。 – Barmar

答えて

0

データが更新/挿入/削除されていない場合は、データベースを読んでいる間にデータベースをロックしないように指示する場合があります。それが助け場合、ドキュメント内

もっと読み:

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; 
SELECT * FROM TABLE_NAME ; 
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; 

http://itecsoftware.com/with-nolock-table-hint-equivalent-for-mysql参照:):

がMYSQLの場合、これは、の線に沿って何かであるように思わ

https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html

TSQLの同等機能は、Googleをさらに必要とする場合に役立ちます。

SELECT * FROM TABLE WITH (nolock) 

これにより、パフォーマンスが向上する可能性があります。他のコメントで指摘されているように、良い索引付けが役立つかもしれませんし、可能であればテーブルを分割して物事を広げて、必要ない場合はすべてのデータにアクセスしないようにしてください。

メモとして、テーブルをロックすると、他の人がデータを使用している間にデータを変更することができなくなります。挿入/削除/更新が多いテーブルをロックしないと、同じデータ(ハードドライブ上を移動したとき)、欠落している行などの複数の行を返す可能性があります。

あなたのリクエストに対して選択している1つのテーブルがあるので、すべてテーブルをロックしたりロックを解除したりします。更新、挿入、削除を行っていない場合は、データが変更されるべきではないので、ロックを忘れる必要はありません。

関連する問題