2011-12-18 3 views
2

私はPythonアプリケーションのユーザーで、インデックスが不適切なテーブルを持ち、アプリケーションの起動時にSQLiteデータベースをインメモリデータベースに変換してパフォーマンスを向上させることができるかどうか疑問に思っていました。私の考えは、特にSQLiteが自動索引を作成している可能性があるため、フルテーブルスキャンの問題を最小限に抑えることです。これはSQLAlchemy ORM(アプリケーションが使用するもの)を使用してどのように達成できますか?SQLAlchemyを使ってSQLiteデータベースをメモリに読み込むことはできますか?

+0

あなたはプログラマーではないと言いましたが、私にとってはこれはプログラミングの重い仕事に非常によく似ています。しかし、メモリ内で動作するようにSQLiteを変更するのではなく、単に既存のSQLiteデータベースにインデックスを追加するだけです。アプリケーションコードに触れることなく、要件内でパフォーマンスを得ることができます。 "SQLiteデータベースエディタ"を検索します。 – wberry

答えて

0

Pythonで変数を設定するたびに、オブジェクトをインスタンス化します。つまり、メモリを割り当てることになります。

sqliteをクエリすると、ディスクから情報をメモリに読み込むだけです。

sqlalchemyは単なる抽象です。同じ方法で、データベースにクエリを行い、返されたデータを変数に設定することによって、ディスクからメモリにデータを読み込みます。

+1

私はOPがメモリ内のデータベースをキャッシュすることによってディスクアクセスコストを避けたいと考えています。 –

+0

正解、ディスクアクセスを最小限に抑えたい。 – user1104069

+0

これは、すべてのデータをdbに照会し、サポートされているメモリdbとのセッションを確立し、テーブルを作成し、照会されたデータを挿入することです。 sqlalchemyチュートリアルには、これを行うために必要なすべての情報が含まれています。 –

1

プログラムの開始時に、データベースファイルをramdiskに移動し、SQLAlchemyをポイントして処理してから、SQLiteファイルを不揮発性ストレージに戻します。

これは素晴らしい解決策ではありませんが、データベースをメモリにキャッシュする価値があるかどうかを判断するのに役立ちます。

関連する問題