SQLite はどの程度スケーラブルですか? [closed] 質問する

SQLite はどの程度スケーラブルですか? [closed] 質問する

私は最近この質問を読みましたSQLite と MySQLそして、その回答ではSQLiteはスケールしないということが指摘されており、公式ウェブサイトではこれはある意味確認できる、 しかし。

SQLite はどの程度スケーラブルですか? また、その上限は何ですか?

ベストアンサー1

昨日、あなたの担当者を追跡するための小さなサイト*をリリースしました。このサイトでは、すべての訪問者に対して共有 SQLite データベースを使用しました。残念ながら、ホストにかかる負荷が中程度であったにもかかわらず、実行速度はかなり遅くなりました。これは、更新/挿入が含まれているため、誰かがページを表示するたびにデータベース全体がロックされたためです。すぐに MySQL に切り替えましたが、テストする時間はあまりありませんでしたが、SQLite よりもはるかにスケーラブルであるようです。ページの読み込みが遅く、sqlite のシェルからクエリを実行しようとすると、データベースがロックされているというエラーが時々発生したことを覚えています。そうは言っても、SQLite から別のサイトを問題なく実行しています。違いは、サイトが静的 (つまり、データベースを変更できるのは私だけ) であるため、同時読み取りで問題なく機能することです。教訓: データベースの更新がまれにしか発生しない (ページが読み込まれる頻度よりも少ない頻度) Web サイトにのみ SQLite を使用してください。

編集: SQLite に対して公平ではなかったかもしれないことに気付きました。Web ページから SQLite データベースを提供しているときに、SQLite データベースの列にインデックスを付けていませんでした。これが、私が経験した速度低下の一因でした。ただし、データベース ロックの観察結果は変わりません。特に面倒な更新がある場合、SQLite のパフォーマンスは MySQL や Postgres に匹敵しません。

別の編集:この記事を投稿してから約 3 か月が経ちましたが、SQLite のスケーラビリティを詳しく調べる機会がありました。いくつかのトリックを使えば、かなりスケーラブルになります。最初の編集で述べたように、データベース インデックスはクエリ時間を大幅に短縮しますが、これは SQLite に関するものではなく、データベースに関する一般的な見解です。ただし、SQLite を高速化するために使用できる別のトリックがあります。取引複数のデータベース書き込みを行う必要がある場合は、必ずトランザクション内に書き込みを組み込みます。書き込みクエリが発行されるたびにファイルに書き込み (およびロック) する代わりに、書き込みはトランザクションが完了したときに 1 回だけ実行されます。

最初の段落でリリースしたと述べたサイトは SQLite に戻され、いくつかの場所でコードを調整した後、非常にスムーズに動作するようになりました。

* サイトは利用できなくなりました

おすすめ記事