まりふのひと

Accessが扱えるの最大レコード数や容量に関する情報

FS社の Accessシステム。Windows98で開発、約2年掛かったので開発が終わって 10年は経っている はず。

  • 自分のパソコンは何度もダウン,買い換えているので、現在のパソコンの中に当時の記録は無い。
    • 該社とのメールで、一番古いのが 2005/08/09、パソコンを入れ替える件
  • はてなダイアリーを利用していなかったのが悔やまれる。

そのFS社より、

「データが時々おかしくなるが、しばらくすると正常になる」

という定性的なヘルプコールが掛かった。
来年、伺うことになっているので、予備調査を行った。

※1)Accessの最大レコード数 (オフィス系ソフトの Q&A【OKWave】)

 アクセスはバージョンによると思いますが、2000 の場合は以下のようになります。

  • MDBファイル容量・・・・・・・・・・2GB以内
  • テーブル・クエリ・フォームの合計 ・32768個
  • 同時使用ユーザ数 ・・・・・・・・・255
  • 1テーブル内のフィールド数・・・・・255
  • 同時に開くことができるテーブル数 ・2048
  • 1テーブルの容量・・・・・・・・・・2GB

 1テーブルで2GBという容量を超えなければ、レコード数の制限はないということのようです。

 レコード数に制限はありませんが、1つのテーブルで 1GB。全体のファイルサイズの上限は 2GBです(Access2000)。
1レコード 1KBのテーブルの場合だと 100万件位になるのかな。

※2)Access 2010 の仕様 (Access - Office.com)

データベースの仕様

 Microsoft Access 2010 および Access 2007 データベースの仕様を次に示します。

  • Access データベース (.accdb) ファイルのサイズ: 2GB からシステム オブジェクトに必要な領域のサイズを引いた値
  • データベースのオブジェクトの数: 32,768
  • テーブルのサイズ: 2GB からシステム オブジェクトに必要な領域のサイズを引いた値
  • システム オブジェクトのサイズとは (Access Club 超初心者 FORUM)
     通常は見えませんが、「ツール」→「オプション」→「表示」で、「システムオブジェクト」にチェックを入れると見ることが出来ます。
    MySysなんちゃらという奴です。
    • “MySys”‥‥ ん! 見たことある...
※3)Accessで扱うことのできるデータの件数は何件まで? (Yahoo!知恵袋

 (データ構造にも依存いますが)数十万データで、利用不可でした。
余談かもしれませんが、下記はご参考まで。

 本格的な DBアプリを作られたいなら、Accessはお勧めしません

 Accessよりも、トリガーの使える SQL Server 2005 Express にしてみては?

http://www.microsoft.com/japan/sql/editions/express/default.mspx

無料ソフトで、容量は、レコードサイズで変化するけれど、最大4GBまで

  • http://q.hatena.ne.jp/1192799422 (人力検索はてな
     Microsoft Jet は、高い負荷がかかるサーバー アプリケーション、多くのプロセスによって同時に使用されるサーバー アプリケーション、毎日 24 時間無停止で実行されるサーバー アプリケーションでの使用は想定されていません。
     http://support.microsoft.com/kb/303519/ja の以下の項がまさにそれになると思います。
    • ネットワーク環境におけるその他の推奨事項
    • ネットワーク ファイル サーバーの OpLock (Opportunistic Locking) について
    • Microsoft Jet データベースを共有する場合の注意事項
    • 堅牢なファイル サーバーを使用する
    • ネットワーク接続を確認する
    • 各クライアントからの接続数を最小限に抑える

     個人的には Microsoft もファイル共有環境での使用は推奨していないということに強く留意を払うべきだと思います。
    • 上記にあるサイト(http://support.microsoft.com/kb/303519/ja)からの大項目の抜粋
      1. オペレーティング システムの最新の Service Pack がインストールされていることを確認する
      2. Microsoft Jet の最新の Service Pack がインストールされていることを確認する
      3. 効率的なデータベース設計を使用する
      4. 予約語や予約文字をオブジェクト名やフィールド名として使用しない
      5. Microsoft Jet データベースを定期的に最適化する
      6. Microsoft Jet データベース ファイルを定期的にバックアップする
      7. ネットワーク環境におけるその他の推奨事項
      8. ネットワーク ファイル サーバーの OpLock (Opportunistic Locking) について
      9. Microsoft Jet データベースを共有する場合の注意事項
      10. 堅牢なファイル サーバーを使用する
      11. ネットワーク接続を確認する
      12. 各クライアントからの接続数を最小限に抑える
      13. Microsoft Jet データベースへのアクセスに ADO を使用する
      14. トランザクション対応のデータベース エンジンに移行して整合性を高める
※4)Oracle 関連
  1. Oracleの性能限界 (Oracle Technology Network (OTN) Japan)
    Oracle9iのスペックについて次のように明記されていました。
    • 最大データベース・サイズ 512PB
    • データベースあたりの表の最大数 無制限
    • 表ごとの最大列数 1000
    • 表ごとの最大行数 無制限
    これを見る限りソフト的な制限を気にする必要はなさそうですね。
※5)SQLサーバー関連
  1. ここまで使える SQL Server Express Edition (@IT)
    データベース・サイズの上限
※6)MSDE に関する情報
  • MSDE (意味/解説/説明/定義 : IT用語辞典)
    MSDEMicrosoft SQL Server 2000 Desktop Engine 】

     Microsoft社が開発したデータベースエンジン。同社Webサイトなどで単体で無償配布されているほか、Microsoft AccessVisual Studioなどに同梱されている。
     同社の大規模向けデータベース管理ソフト「Microsoft SQL Server」のデータベースエンジン部分を抜き出した製品で、Microsoft Access標準のエンジンであったJetデータベースエンジンに比べ高い性能を発揮する。Jetがデスクトップでの単体利用に適していたのに対し、クライアントサーバ型でのネットワーク利用にも対応する。ただし、2GB以上のデータベースを扱えない、同時利用5人以下に最適化されている、複数サーバにまたがるトランザクションに対応できないといった制限があり、SQL Serverを利用したソフトウェアの開発やテストに利用したり、少人数で利用するのに適している。
  • 「SQL Server Express」と「MSDE」を比較する (ITpro)

 SQL Server
Express
MSDE
データベース・エンジン機能
1点
0点
対応OS
0点
1点
データベースのサイズ
1点
0点
ワークロードのスケーラビリティ
1点
1点
業務システム向け機能
1点
1点
アプリケーションの展開
1点
0点
管理ツール
1点
0点