2016-09-11 7 views
0

オンラインで回答が見つかりませんでしたので、ここに行きます。私は、各ユーザーのためにクラウド上に一時的なメモリ内SQLITE3データベースを作成するSAASを開発しています。データベースは、それゆえ彼らは、インメモリされ、保存されません。Pythonメモリ内データベースのオーバーフロー

import sqlite3 
conn = sqlite3.connect(':memory:') 

私の質問は、スケーラビリティに関してれます。最悪のシナリオには、同時にGBサイズのデータ​​ベースを作成する何千ものユーザーがいます。メモリ不足時のSQLite3のデフォルトの動作は何ですか?追加のデータベースをディスクに書き込むのか?それはちょうどクラッシュするでしょうか?

私はこれもSAAS SERVERの設定方法の機能であることを認識していますが、私の質問はメモリの問題のみにあります。

答えて

2

このdocumentation page読み取り:

[一時とインメモリデータベースの間】唯一の違いは、ということである「:メモリは:」データベースが一時データベースの部分に対し、常にメモリ内に維持しなければなりませんデータベースが大きくなったり、SQLiteがメモリ不足になったりすると、ディスクにフラッシュされる可能性があります。

これは、SQLiteにメモリ不足が発生した場合、おそらくオペレーティングシステムのエラーコードに当たることを意味します。

RAMが消費されても、データベースはOSによってディスクにスワップされる可能性があります。

私は恐れている場合は、同じドキュメントページに記載されているように一時的なデータベースを使用することをお勧めします。したがって、RAMを使い果たした場合、SQLiteはそれらをディスクにフラッシュできます。

+0

私は一時データベースについて知りませんでした。それは私が探していた答えです! – twegner

+0

ようこそ。) –

関連する問題