2009-07-20 11 views
11

定期的にSQL CEデータベースを圧縮する必要がありますか?自動縮小は十分でしょうか?私たちの平均データベースサイズは約100Mbで、大規模なユーザーは400-500Mbを打ちました(しかし、それは非常にまれです)。手動でコンパクトにする必要がある場合は、どうすればいいのかを教えてください。プログラムによる無駄なスペースの断片化のレベルまたは割合を示す方法はありますか?そうでない場合は、他にどのようなしきい値を使用できますか?SQL CEデータベースをどのくらいの頻度で圧縮する必要がありますか?

この製品の以前のバージョンはMS Accessデータベース(gasp)MS Accessデータベース上に構築されていたため、動作させるために定期的にコンパクトにする必要がありました。

+0

あなたはhttp://serverfault.com/でこの質問をするほうがよいかもしれません。 – andychase

答えて

8

データベースを自動的に縮小して必要に応じて修復できるように設定することができれば、それはかなり徹底的だと思います。それがベストプラクティスに関する文献が少ない理由です。それが「うまくいく」という一般的な仮定があります。だから、この分野であなたが得意とするものはすべて曖昧になります。ここで

は、SQL Server Expressの エディションを維持http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

でウェブキャストからの(部分)引用は、私たちがするオプションを持っている を意味し、 他のマルチユーザ・データベースの管理にかなり似ていますファイルグループとの取引 に入ると、 のバックアップオプションと復旧モデル との対応ができません。 [しかし] をコンパクトエディションまたはSQLサービス CEで処理すると、 オプションはほとんどありません。本当に、唯一のオプションは です。どうすれば対処したいですか? 縮小と修理。ここで

は、データベースのアーキテクチャについて良い詳細を与えること http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

お知らせでMSDNから別のものであるが、それでもメンテナンススケジュールを与えることはありません。彼らのアドバイス:は、データベースが遅くなるのを開始します。また、このアドバイスは2005年頃に公開されており、その後も改善されています。メンテナンス手順が自動化されている。

SQL Serverの CE 2.0の大規模なデータベースの パフォーマンスのもう一つの大きな要因は データベース構造自体の組織である注文
にあなたの家(またはデータベース)を保管してください。 アプリケーションが データベースの内容を変更すると、レコードは データベースファイル構造 内でランダムに分散します。この因子 は、挿入数と削除数が大きい の後に特に当てはまります。 データベースへの最適なアクセスを確保するには、 の内容が大幅に変更された後にデータベースをコンパクト化してください。 データベースにコンパクトを実行未使用 スペースを回収することに加えて

は、 パフォーマンス上の2つの顕著な影響を有している:第一に、それは彼ら 主キー順に全て テーブルレコードを格納します。 2番目に、クエリ プロセッサによって使用された 統計を更新します。

プライマリキー でレコードを注文すると、プライマリキー のアクセス性が格段に向上します。これは、 というページ指向の性質のSQL Server CE (および他のほとんどのデータベース)が原因です。むしろ 個々のレコードを からメモリにロードするよりも、SQL Server CEは というレコードブロックをロードします。 のデータベースレコードがプライマリキー順にグループ化されている場合、 は1つのレコードを含むページをロードします。 は、 のプライマリキー値を持つレコードを自動的に読み込みます。最も のアプリケーションでは、これはあなたのアプリケーション が連続したデータベース レコードにアクセスするために行くとき、 それらのレコードを含むページがあるという強い可能性 があることを意味し 「ヒット率」 が良いとも呼ばれているものになりすでにメモリに入っており、 に直接アクセスすることができます。レコードは よりランダムに分布している場合は、できるだけ頻繁に は の同じ番号にアクセスするには、データベース ファイルからより多くのページを取得 へのSQL Server CEを必要とする貧しい ヒット率があり、 挿入多数の後に発生すると削除されます記録。

クエリプロセッサの統計 は、クエリプロセッサ がレコードを検索する最も良い方法を決定する方法に影響します。特定の レコードを検索するために キーを使用するか 順次スキャンを行うかのような決定はすべて、クエリ プロセッサ統計の影響を受けます。 の統計情報が失効すると、クエリ が最適化されていない可能性があります( )という尤度が 増加しています。コンパクトに を実行すると、これらの統計がリフレッシュされます。

私はAccessデータベースの経験に同情します。しかし、私は、SQL Server CEの経験がほとんど似ていないことに気付くでしょう。

関連する問題