バックアップジョブに関する情報を格納するためにsqliteデータベースが使用されています。実行ごとに、特定のテーブルに約32,000のエントリを追加した結果、およそ25MBが増加します。SQLiteでのパフォーマンスの主な効果
このテーブルは、特定の情報を別のテーブルのレコードにリンクするために使用される「マップテーブル」です。これには、使用しない主キー(autoincrement int)があります。
sqliteは、値に応じてINTカラムに1,2,4または8バイトを予約します。このテーブルにはINTタイプの3つの追加列しかありません。
私は、クエリとしてフィルタとして使用する列(WHERE)のインデックスをデータベースに追加しました。
索引などが存在し、説明されている状況では、主キーはパフォーマンスの面でメリットがありますか?
注:パフォーマンスはこのプロジェクトにとって非常に重要ですが、32,000エントリのジョブに10msを保存すると、さらに10MBのデータが必要になります。
私はこれにほとんど同意します。重要なアイデアは、データベースをメモリに保持することです。インデックスが大きすぎる場合は、重要です。 – Unknown
@未知数:通常のディスクバックアップのメモリキャッシングデータベースの場合、未使用のインデックスはメモリに入ってはならず、そうであれば、すぐにもう一度追い出されます。しかし、バックアップディスクストレージを持たない完全なインメモリデータベースを構築している場合、これらのインデックスはおそらくあなたを傷つけるでしょう。 – Thilo