Mobile Link は、RDBMS で独立性レベルが有効になっている場合、最適な独立性レベルで統合データベースに接続します。データの一貫性を維持しながら最高のパフォーマンスを提供するデフォルトの独立性レベルが選択されます。
通常、Mobile Link はアップロードには独立性レベル SQL_TXN_READ_COMMITTED を使用し、可能な場合には、ダウンロードにはスナップショット・アイソレーションを使用します (不可能な場合には、SQL_TXN_READ_COMMITTED を使用します)。スナップショット・アイソレーションは、トランザクションが統合データベースで閉じられるまでダウンロードがブロックされる問題を解消します。
スナップショット・アイソレーションを使用すると、重複データがダウンロードされる可能性があります (たとえば、実行時間の長いトランザクションによって同じスナップショットが長時間使用される場合)。しかし、Mobile Link クライアントはこの問題を自動的に処理するので、低下するのはリモート側での転送時間と処理作業量だけです。
通常、独立性レベル 0 (READ UNCOMMITTED) は同期には不適切で、データの不整合を引き起こす可能性があります。
独立性レベルは、データベースへの接続が行われた直後に設定されます。さらに他の接続設定が行われてから、トランザクションがコミットされます。独立性レベルと、場合によってはその他の設定を有効にするために、ほとんどの RDBMS で COMMIT が必要です。
SQL Anywhere バージョン 10 はスナップショット・アイソレーションをサポートしています。デフォルトでは、Mobile Link はアップロードには SQL_TXN_READ_COMMITTED 独立性レベルを、ダウンロードにはスナップショット・アイソレーションを使用します。
SQL Anywhere 統合データベースでスナップショット・アイソレーションを有効にした場合だけ、Mobile Link はスナップショット・アイソレーションを使用できます。スナップショット・アイソレーションが有効でない場合、Mobile Link はデフォルトの SQL_TXN_READ_COMMITTED を使用します。
データベースがスナップショット・アイソレーションを使用できるようにすると、パフォーマンスに影響を与える可能性があります。これは、スナップショット・アイソレーションを使用するトランザクションの数に関係なく、修正されたすべてのローのコピーを保持する必要があるからです。スナップショット・アイソレーションの有効化を参照してください。
アップロードに対してスナップショット・アイソレーションを有効にするには mlsrv11 -esu オプションを使用し、スナップショット・アイソレーションを無効にするには mlsrv11 -dsd オプションを使用します。接続スクリプトで Mobile Link のデフォルトの独立性レベルを変更する必要がある場合は、begin_upload スクリプトまたは begin_download スクリプトで変更してください。begin_connection スクリプトでデフォルトの独立性レベルを変更すると、アップロードとダウンロード・トランザクションの開始時に設定が上書きされます。
-esu オプションと-dsd オプションを参照してください。
バージョン 10 より前の SQL Anywhere を使用している場合、デフォルトの Mobile Link 独立性レベルは SQL_TXN_READ_COMMITTED です。begin_connection スクリプトで Mobile Link セッション全体のデフォルト値を変更するか、begin_upload スクリプトと begin_download スクリプトでアップロードとダウンロードのデフォルト値をそれぞれ変更できます。
Adaptive Server Enterprise では、デフォルトの Mobile Link 独立性レベルは SQL_TXN_READ_COMMITTED です。begin_connection スクリプトで Mobile Link セッション全体のデフォルト値を変更するか、begin_upload スクリプトと begin_download スクリプトでアップロードとダウンロードのデフォルト値をそれぞれ変更できます。
Oracle はスナップショット・アイソレーションをサポートしていますが、READ COMMITTED と呼ばれています。デフォルトでは、Mobile Link は、アップロードとダウンロードに対してスナップショット・アイソレーション/READ COMMITTED 独立性レベルを使用します。
begin_connection スクリプトで Mobile Link セッション全体のデフォルト値を変更するか、begin_upload スクリプトと begin_download スクリプトでアップロードとダウンロードのデフォルト値をそれぞれ変更できます。
Mobile Link サーバがスナップショット・アイソレーションを最大限有効に利用できるようにするには、Mobile Link サーバが使用する Oracle アカウントは、Oracle システム・ビュー V_$TRANSACTION に対するパーミッションを持っている必要があります。持っていない場合には、警告が表示され、ローはダウンロードで失われることがあります。SYS だけがこのアクセス権を付与できます。このアクセス権を付与する Oracle の構文は次のとおりです。
grant select on SYS.V_$TRANSACTION to user-name |
Microsoft SQL Server 2005 はスナップショット・アイソレーションをサポートしています。デフォルトでは、Mobile Link はアップロードには SQL_TXN_READ_COMMITTED 独立性レベルを、ダウンロードにはスナップショット・アイソレーションを使用します。
SQL Server 統合データベースでスナップショット・アイソレーションを有効にした場合だけ、Mobile Link はスナップショット・アイソレーションを使用できます。スナップショット・アイソレーションが有効でない場合、Mobile Link はデフォルトの SQL_TXN_READ_COMMITTED を使用します。詳細については、SQL Server のマニュアルを参照してください。
アップロードに対してスナップショット・アイソレーションを有効にするには mlsrv11 -esu オプションを使用し、スナップショット・アイソレーションを無効にするには mlsrv11 -dsd オプションを使用します。接続スクリプトで Mobile Link のデフォルトの独立性レベルを変更する必要がある場合は、begin_upload スクリプトまたは begin_download スクリプトで変更してください。begin_connection スクリプトでデフォルトの独立性レベルを変更すると、アップロードとダウンロード・トランザクションの開始時に設定が上書きされます。
-esu オプションと-dsd オプションを参照してください。
SQL Server でスナップショット・アイソレーションを使用するには、Mobile Link サーバをデータベースに接続するのに使用するユーザ ID が、SQL Server システム・テーブル SYS.DM_TRAN_ACTIVE_TRANSACTIONS にアクセスするパーミッションを持っている必要があります。このパーミッションが与えられていない場合、Mobile Link はデフォルト・レベルの SQL_TXN_READ_COMMITTED を使用します。
統合データベースが、他のデータベースも実行している Microsoft SQL Server で実行している場合、アップロードまたはダウンロードにスナップショット・アイソレーションを使用している場合、およびアップロードまたはダウンロード・スクリプトがサーバ上の他のデータベースにアクセスしていない場合は、Mobile Link サーバの -dt オプションを指定してください。このオプションにより、Mobile Link は、現在のデータベース内のトランザクションを除く、すべてのトランザクションを無視します。これにより、スループットが向上し、ダウンロードされるローの重複が減少します。
-dt オプションを参照してください。
バージョン 2005 より前の Microsoft SQL Server を使用している場合、デフォルトの Mobile Link 独立性レベルは SQL_TXN_READ_COMMITTED です。begin_connection スクリプトで Mobile Link セッション全体のデフォルト値を変更するか、begin_upload スクリプトと begin_download スクリプトでアップロードとダウンロードのデフォルト値をそれぞれ変更できます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |