3


1

MS Accessデータベースに関するいくつかの質問 -

サイズ:アクセスデータベースのサイズに制限はありますか? 私が尋ねるのは、いくつかの単純なテーブルを持つアクセスデータベースがあるからです。 データベースのサイズは約1GBです。 クエリを実行すると、実行に10分以上かかります。

適切なインデックスを作成することで、MS Accessがこれを処理できるようになるか、またはテクノロジに基本的な制限があるか

これはMS Access XPです。

また、MS Accessはdbトランザクション、コミット、ロールバックをサポートしていますか?

8 Answer


4


ここにはさまざまな答えがたくさんありますが、私の意見では、スケーラブルな解決策としてアクセスはありません。 あなたが1Gbのサイズに近づき始めると、安定性はメジャーな関心事になり始め、そして実際にはそれはパフォーマンスを持っていないだけです。

トランザクションサポートに関しては、http://support.microsoft.com/kb/248011 [このMicrosoft Artic]ファイルを参照してください。

また、 アクセス制限の大部分を実際に指摘している記事もあります。


2


答えて -

サイズ:Accessデータベースの最大サイズは2 GBです。

トランザクション:トランザクションは基盤となるJETデータベースエンジンによって完全にサポートされています。

過去の経験から、おそらく使用可能な最大サイズに到達している可能性があり、おそらくSQL Server Expressへの拡大を検討する必要があると私は言います。


0


個人的には、「使用可能」な制限が数百メガバイトの範囲にあることがわかりました。

アクセスは小規模データベース用に設計されています。 大規模なもの、つまりあなたが使用しているものだけでなく、SQL Server、ORacle、DB2、MySQLなどの「本物の」RDBMSを検討する必要があります。

編集 - Accessでトランザクションを処理する方法については、http://www.blueclaw-db.com/vb_transaction_processing.htmを参照してください。 どうやらそれはネイティブではありません。


0


Accessデータベースの最大サイズは2 GBです。 他のファイルのリンクテーブルを使用することでこれを回避できますが、すでにパフォーマンスの問題が発生している場合は、おそらくより堅牢なデータベースを使用することになります。

私のお勧めは、http://www.microsoft.com/japan/sql/editions/compact/default.mspx [SQL Server Compact]を参照することです。これは、無料のファイルベースのデータベース、またはもっと良いのはhttp:です。 //www.microsoft.com/japan/express/sql/default.aspx [SQL Server Express]は、複数のユーザーとSQL Serverとの相互運用性をサポートする、無料の "ライト"バージョンのSQL Serverです。 どちらも4GBデータベースに制限されています。

Accessを含む、上記のすべての製品はトランザクションをサポートしています。


0


それらがXPバージョンにまだあるかどうかはわかりませんが、Access 97には、コンパクトで修復可能なオプションがありました。 それでも選択肢がある場合は、役に立つかもしれません。


0


SQL Serverの導入にかかる費用がOracleと同程度にひどく高かった時代には、これは何年も前からさかのぼりますが、私のクライアントの1人はAccessを使ってインバウンドコールセンターを管理しようとしていました。

私たちはVLDBという非常に大規模なデータベースの概念4000万行について話しています。 これは、電話会社が発信者IDを公開し、無料の発信者IDデバイスを受け取る方法を加入者に提供する時代の頃でした。 コスト上の制約から、彼らはSQL Serverへの投資をするという私の願いを無視しなければなりませんでした。

実際には、Accessは約800MBで倒れたようです。 負荷を処理するために、テーブルを複数のAccessデータベースに分割しました。 信じられないかもしれませんが、それは美しく機能しました。 クライアントは感謝していました。

実際にはSQL Expressが利用可能であることを考えると、私もその方法をとることをお勧めします。


0


Accessニュースグループを長年読んできた私の印象は、ACE / Jetエンジン(.accdb、.mdb、または.mdeファイル)は、バインドフォームを使用するRADフォームベースの開発環境としてMS Accessを使用する場合にのみ推奨されることです。 Accessフロントエンドを持っていないのであれば、もっとスケーラブルな(そして有能な)選択肢を検討するときにACE / Jetバックエンドを支持する議論はほとんどありません。等

ACE / Jetエンジンのトランザクションサポートを再評価すると、はい、存在しネイティブです。 DAOを介したトランザクションの使用に関する記事にリンクされたもう1つの回答:DAOの開発はエンジンおよびトランザクションのそれより遅れるため、DAOの多くの側面は制限されていることに注意してください。 幸いなことに、SQL DCLを使用することができます。BEGINTRANSACTION、COMMIT TRANSACTION、ROLLBACK TRANSACTIONなど。 ネストしたトランザクション SQL DCLでは、AccessインターフェイスをANSI-92クエリモードにする必要があります。 ADOはこのモードをネイティブに使用するため、ADOの使用は機能します。 詳しくは、以下を参照してください。

http://msdn.microsoft.com/ja-jp/library/aa139977(office.10).aspx[Access 2000用Microsoft Jet SQLの高度化]


0


Jetは、Accessだけでなく、あらゆるデスクトップ開発プラットフォームにとって非常に優れたデータストアです。 これはVB開発者にとって常に最初の選択であり、それでも(正当な理由のため)です。

それほど大きくなることが予想されていない1GBのMDBは、速度や信頼性の点で問題にならないはずです。 遅い場合は、正しく索引付けしていないか、非常に非効率的なSQLを書いています。 非効率的なSQLの例としては、式にWHERE句を適用することが考えられます。したがって、式ではインデックスを使用できません。

WHERE年([MyTable]。[MyDate])= 2002

とは対照的に

#1/1/2002#と#12/31/2002の間のMyTable.MyDate#

安定性の問題(つまり、頻繁な破損)がある場合は、それを解決する必要があります。通常、人的ミス、ハードウェアの問題、またはソフトウェアの問題(内部のJet書き込み操作を妨げるAVソフトウェアなど)が原因です。

しかし重要な決定要因は、MDBの成長速度です。 過去の成長率を推定して5年以内に2GBに近づいたら、もうすぐサイズアップする必要があると思います。 それが10年のようなものであれば、とにかくやるべきです。 それが20年だとしたら、それほど多くはありません。