小さな画像をブロブとして保存したSQLiteデータベースがあります。私は、これらの画像をできるだけ早く数十枚読んで、それらをユーザーインターフェースに表示する必要があります。SQLiteデータベースからブロブを読み取る際のパフォーマンスを向上させる
コードをプロファイリングすると、データベースから読み込むsqlite3_step
コールで大部分の時間が費やされたことが明らかになりました。
これらの読み取りのパフォーマンスを向上させるにはどうすればよいですか?
パフォーマンスを向上させるために同時に複数のスレッドをデータベースから読み取ることも考えられますが、SQLiteのthe threading documentationはあまり明確ではありません。データベースから複数のスレッドを一度に読み取ることは可能ですか、どのスレッドから来たものであろうと直列化されているか?
SQLiteデータベースからBLOBを読み取る処理量を改善する他の方法はありますか?
最初に大きなブロブをデータベースに入れずに、ファイルシステム内に保持し、データベースへの参照を保持するだけです。これの理由は?パフォーマンス。 – trojanfoe
@trojanfoe同意するが、これはこの特定のケースでは選択肢ではない。 – Bill
次に、私はあなたが価格を支払わなければならないと思います。インサートのパフォーマンスを向上させる手法はありますが、パフォーマンスの読み込みができるとは思えません。 – trojanfoe