4

デスクトップとPDAの多くのアプリケーションにSQLiteを使用しています。SQLiteはアプリケーションの参照資料のデータストアとして機能するため、ほとんどの操作は読み取り専用です。

基本的に、データへのアクセスが読み取り専用であることがわかっているシナリオでパフォーマンスを向上させるための提案を探しています。

たぶん、さまざまなプラグマ設定を介して?等...

SQLiteのパフォーマンスは優れていますが、複数のデータベースがあるPDAでは、パフォーマンスにわずかな影響が見られます。これはSQLiteの問題ではなく、PDAの速度の現実です。しかし、そうは言っても、それを改善する方法があるかもしれません。


良いアドバイスとよく入れてください。私は、自分がしていることをエンジンに伝える際に、より具体的な何かを望んでいます。たとえば、エンジンにDBへの複数の書き込みがないことを通知したり、何らかの方法でキャッシュ処理を変更したりします。

ただし、データベースの「設計」の側面に注目を集めていただき、ありがとうございます。

4

3 に答える 3

2

標準のデータベース パフォーマンスのヒントは引き続き適用されます。

  • クエリが完全なテーブル スキャンではなくインデックスを使用していることを確認してください
  • クエリでできる限り選択して、データベースから不要な行を取得しないようにします
  • 必要な列のみを選択します
于 2008-11-03T12:45:10.727 に答える
2

フラグ SQLITE_OPEN_READONLY を指定した sqlite3_open_v2() は、SQLite が日和見ロックを処理する方法を変更し、実際のパフォーマンス上の利点はありません。大量の読み取りを行っている場合、またはデータベースのサイズに応じて、:memory open オプションを使用してデータベースのメモリ内コピーを作成する場合は、プラグマ cache_size を使用できます。

于 2008-12-23T00:23:42.393 に答える
-1

フラグSQLITE_OPEN_READONLYを指定してsqlite3_open_v2()を呼び出すことができます。sqlite3が実際にそれを使用して動作を最適化するのか、それともOSへのopen呼び出しに適切な権限を設定する方法として使用するのかはわかりません。

于 2008-11-07T13:53:51.007 に答える