2016-12-01 13 views
0

2つのクエリを実行する必要があります。クエリAが長く(20秒)、クエリBが高速(1秒)です。 クエリAが実行中の場合でもクエリBが高速に実行されることを保証したいと思います。 どうすればこの現象が起こりますか?NodejsとSqlite。長いクエリを実行する

答えて

0

SQLiteがどのようにロックするのかは、簡単ではないかもしれません。

公式Appropriate Uses For SQLiteドキュメントから:

SQLiteは同時に、読者の数に制限をサポートしていますが、それだけで任意の瞬間における1人のライターを許可します。多くの場合、これは問題ではありません。ライターキューアップ。各アプリケーションは、データベースの作業を素早く実行し、ロックは数十ミリ秒以上持続しません。しかし、より多くの並行性を必要とするアプリケーションがあり、それらのアプリケーションは異なるソリューションを探す必要があります。 [...] SQLiteはデータベースファイルごとに一度に1つのライターしかサポートしていません。しかし、ほとんどの場合、書き込みトランザクションには数ミリ秒しかかかりません。したがって、複数のライターは順番に交代することができます。 SQLiteは、多くの人が疑うより多くの書き込み同時処理を処理します。それにもかかわらず、クライアント/サーバ・データベース・システムは、アクセスを調整するために長時間実行されているサーバ・プロセスを持っているため、SQLiteの場合よりもはるかに多くの並行処理を処理できます。

SQLiteのドキュメントでは、1つのクエリで長時間かかるデータが非常に多い場合、SQLiteを使用する最も良い方法はありません。

PostgreSQLのような実際のRDBMSを使用する以外に、簡単に解決する方法はありません。

あなたが長い間かかるクエリを含めていないので、それ以上のことを教えてもらえません。もちろん、クエリを最適化することはできますが、そのことはわかりません。

+0

クエリは単純なselect * from tableであり、テーブルには10000000個のレコード(たとえば)があります。 – user2957271

関連する問題