増大するアクセスファイルのサイズを減らすにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1526760

質問

そのため、私の職場には、巨大な Access ファイル (MS Access 2003 および 2007 で使用) があります。ファイルサイズは約1.2GBあるので、ファイルを開くのに少し時間がかかります。レコードを削除することはできず、約 100 以上のテーブルがあります (毎月さらに 4 つのテーブルを作成します。質問しないでください)。これを改善するにはどうすればよいですか。つまり、ファイルのサイズを縮小しますか?

役に立ちましたか?

解決

良い ..@Larry の言うことを聞いて、長期的にはデータを保持する別のデータベースを見つける必要があることを心に留めておいてください。

しかし、短期的には、この「月に 4 つの新しいテーブル」ということにかなり悩まされます。1 か月あたり 4 テーブルは年間 50 テーブルです...ここにいるすべての「データベース管理者」にとって、それは確かに奇妙に聞こえるでしょう。それで、私たちに教えてください:行数、行の作成方法、目的、毎月テーブルを作成する必要があるのはなぜですか?

データをどのように扱うかによっては、一部のテーブルを XML ファイル (または XLS?) としてアーカイブすることも検討できます。これは、リレーションやビューなどを介してアクセスする必要のない「履歴」データにとっては理にかなっている可能性があります。良い例の 1 つは、PABX から収集された通話リストです。データは、ADODB レコードセットまたは transferDatabase メソッドを通じて、XML/XLS ファイルとして保存したり、XML/XLS ファイルからロードしたりできます。

他のヒント

次の 2 つのことができます。

  • リンクテーブルを使用する
  • 時々データベースを「圧縮」します

リンク テーブル自体はデータベース全体のサイズを制限しませんが、データベースをより小さく、管理しやすいファイルに「パッケージ化」します。これを調べるには:

'File' menu + 'Get External data' + 'Linked tables'

リンク テーブルには、データ サブセットの複数のバージョンを保持できること、リンク テーブル マネージャーを使用して特定のセットを選択できることなど、多くの利点もあります。

データベースを圧縮すると、さまざまな CRUD 操作 (挿入、削除、更新など) によってストレージが断片化されるときに失われるスペースが再利用されます。また、テーブルとインデックスを再グループ化して、検索をより効率的にします。これは次のように行われます

  'Tools' menu + 'Database Utilities' + 'Compact and Repair Database...'

あなたが本当にそこにMSアクセスの限界に対して押し上げている - ?あなたは

ファイルが2GBを超えるいかなる大きく成長することができないことを知っています

私はあなたがすでに追加の正規化によって節約可能な空間のデータを検討してきましたね?あなたは、「アーカイブ」別のMDBファイルに、前の数ヶ月のためにテーブルの一部と、その後は、その場合には、あなたが実際におそらくそう悪い決断だったものから恩恵をするだろう(あなたの「現在」のデータベースにそれらを(恒久的または必要に応じて)リンクすることができます)は、各月の新しいテーブルを開始します。

しかし、データの量と、それはおそらく、より容量の大きいプラットフォームへの移行のための計画を開始する時間です。

あなたは本当にあなたのDBのアーキテクチャを考える必要があります。テーブル間のいずれかのリンクが存在しない場合は、別のデータベース(年ごとに1つのDB :)短期的な解決策としてにそれらのいくつかを移動しようとすることができます..

それはすでに疑わしい態度であり、データの正規化に関する疑わしい

は、毎月複数のテーブルを追加します。 あなたがそれを行う場合、私はあなたのデータベース構造は、フィールドサイズ、データ型とインデックスについても、最適であると思われます。私は本当にダブルそれらを確認することから始めます。

あなたが本当に(私は再び、想像することはできません)、毎月のテーブルの正当性を持っている場合は、月額1バックエンドを持っていない、なぜ?
あなたはまた、のは言わせて、で、メイン、バックエンドに持っているオンラインデータの3ヶ月、その後、あなたはあなたの古いレコードを転送するアーカイブデシベル、可能性があります。
私は、メインテーブルを約650.000記録を持つ、取引のためにそれを使用し、アクセスは非常に敏感です。

「ストローで把握」アイデアのカップル

各列のデータ型を見て、あなたは、レコードごとに少量の保存バイトとして、いくつかの数値を格納することができるかもしれません。

インデックスを見て、あなたが使用していないものを取り除きます。大きなテーブルの上に不要なインデックスは、オーバーヘッドを大量に追加することができます。

私は+ 2 ^ 64データベース設計は少し奇妙であることについての提案をだろうが、私は労働ポイント

文句を言わないので、まだ言われていない何も
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top