MS Accessに関する質問-スケーラビリティ/インデックス作成/トランザクション

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

  •  05-07-2019
  •  | 
  •  

質問

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

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

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

これはMS Access XPです。

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

役に立ちましたか?

解決

ここではさまざまな回答が得られますが、私の意見では、スケーラブルなソリューションとしてのアクセスはありません。サイズが1Gbに近づき始めると、マルチユーザーの状況をうまく処理できなくなり、安定性が大きな懸念になり始め、実際にはパフォーマンスがありません。

トランザクションサポートについては、このMicrosoft Artic leをご覧ください。

また、アクセスの制限

他のヒント

答え-

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

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

過去の経験から、おそらく使用可能な最大サイズに達しているので、SQL Server Expressへのアップサイジングを検討する必要があると言っています。

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

アクセスは、小さなデータベース向けに設計され、意図されています。大きなもの、つまり、あなたと数人の人々が使用しているものを超えたものについては、「本物」を見てください。 SQL Server、ORacle、DB2、MySQLなどのRDBMS。

編集- http://www.blueclaw-dbを参照.com / vb_transaction_processing.htm を使用して、Accessでトランザクションを処理します。どうやらネイティブではありません。

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

SQL Server Compact を確認することをお勧めします。これは無料のファイルベースのデータベースであり、さらに良いのは SQL Server Express 、これは無料の「ライト」です。複数のユーザーとSQL Serverとの相互運用性をサポートするSQL Serverのバージョン。どちらも4GBデータベースに制限されています。

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

XPバージョンにまだ存在するかどうかはわかりませんが、Access 97には圧縮オプションと修復オプションがありました。これらがまだオプションである場合は、役立つ可能性があります。

これは、SQL ServerインストールへのエントリのコストがOracleと同じくらい高かった時代にさかのぼりますが、私のクライアントの1人がAccessを使用してインバウンドコールセンターを管理しようとしていました。

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

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

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

長年にわたってAccessニュースグループを読んでいた印象は、最近では、バインドされたフォームを使用するRADフォームベースの開発環境としてMS Accessを使用する場合、ACE / Jetエンジン(.accdb、.mdbまたは.mdeファイル)のみが推奨されているということですAccessのフロントエンドがない場合、よりスケーラブルな(そして能力のある)代替案を検討する際に、ACE / Jetバックエンドを支持する議論はほとんどありません。MSショップ向けのSQL Server ExpressまたはSQL Server Compact Edition、MySQL、など

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

Access 2000用の高度なMicrosoft Jet SQL

Jetは、Access自体だけでなく、任意の数のデスクトップ開発プラットフォームにとって非常に優れたデータストアになります。これは常にVB開発者にとって最初の選択肢であり、今でも(正当な理由で)選択されています。

大きく成長しないと予想される1GB MDBは、速度や信頼性の点で問題になりません。遅い場合は、インデックスが正しく作成されていないか、非常に非効率的なSQLを記述しています。非効率的なSQLの例は、式にWHERE句を適用することであるため、インデックスを使用できません-例は

です
WHERE Year([MyTable].[MyDate]) = 2002

とは対照的に
WHERE MyTable.MyDate Between #1/1/2002# And #12/31/2002#

安定性の問題(繰り返し破損など)がある場合、これは対処する必要がある問題です。通常は、ヒューマンエラー、ハードウェアの問題、またはソフトウェアの問題(Jet内部の書き込み操作を妨げるAVソフトウェアなど)が原因です。 。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top