11

私は平均よりも大きな sqlite データベース (Windows と Linux の両方で使用するため) を使用しており、そこから得られるパフォーマンスを最大化しようとしています。データベースは、sqlite GUI と共にコモディティ ハードウェアにインストールされます。私がこれを提供しているユーザーはSQLに精通していますが、独自の最適化(インデックスの作成、プラグマの設定など)を行う可能性は低いので、できるだけ箱から出してすぐにパフォーマンスを得たいと思っています(最大限の使用を保証するため)データ)。

1 つの問題は、Windows は Linux よりもクエリの実行を大幅に抑制しているように見えます。もう 1 つの問題は、インデックス作成に対する sqlite のアプローチに慣れていないことです (postgres などの他のデータベースと比較して)。

4

4 に答える 4

4

SQLite Optimization FAQ (数年前ですが、まだ役に立ちそうです)を読みましたか?

SQLiteの場合でも、1GBが特に大きいとは思いません。確かに、はるかに大きなデータベースを安定して処理できます。

于 2008-10-22T14:36:43.513 に答える
3

更新-インポート時のデータのよりインテリジェントな順序付け、積極的なインデックス作成(プロセスでdbファイルのサイズを2倍以上にする)、XPをサーバーのように動作させるためのWindowsの設定の調整で最も成功しましたデスクトップよりも、結合の順序を変更し(オプティマイザーだけに頼ることはできません)、パフォーマンステストスイート(クエリを実行して測定を行うための単なるハーネス)を作成して進行状況を測定します。

エクスペリエンスは楽しく、エンドユーザーは満足してデータを操作できます。

于 2008-11-04T12:54:23.467 に答える
2

大規模なデータのインポートを行っている場合、最も効率的な方法は

  1. 挿入されたデータをできればプライマリ インデックス シーケンスで並べ替えます
  2. 準備済みステートメントを使用する (doh)
  3. インデックスを削除する
  4. トランザクションでラップされたデータを一括で挿入します (ヒットで 10,000 レコードなど)。
  5. インデックスを追加します

また、sqlite はまだ where 句の or 演算子をサポートしていないことも覚えておいてください。ands を使用するために where 句をデモグラナイズすることで、微調整できる場合があります。

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

毎晩「スケジュールされたタスク」と「テーブルを最適化」するスクリプトを確認し、おそらくインデックスを再作成する必要があります。定期的に行うことで、時間と労力を大幅に節約できます。

于 2008-10-22T15:55:01.497 に答える