Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ データベース管理 » 高可用性と読み込み専用のスケールアウトシステム » データベースミラーリング » データベースミラーリングでのアプリケーション開発の考慮事項 » ミラーリングシステムでのデータベースへの接続

 

ミラーデータベースで実行されたクエリ

データベースミラーリングシステムでは、読み込み専用の接続を使用して、ミラーサーバ上で実行されているデータベースにアクセスできます。この機能は、このデータベースへの読み込み専用アクセスを必要とするレポートなどの操作の負荷を軽減したい場合に役立ちます。

ミラーデータベースを変更しようとするとエラーが発生します。これは、-r オプションを使用して読み込み専用でデータベースを起動した場合と同じ動作です。テンポラリテーブルで操作を実行できます。

ミラーデータベースに対して実行されたクエリは、指定された独立性レベルに応じてロックを設定できます。プライマリサーバからの操作の適用がロックによって妨害される場合は、ロックを保持している接続のトランザクションがロールバックされ、その接続用の開いたカーソルがある場合は閉じられます。独立性レベル 0 で実行されているアプリケーションは、ローロックを追加しませんが、スキーマロックは取得します。プライマリサーバからの操作の適用がスキーマロックによって妨害される場合は、ミラーデータベース上のトランザクションのロールバックのみが行われます。

データベースの一貫したビューが必要な (そのため、独立性レベル 0 を使用できない) アプリケーションでは、スナップショットアイソレーションの使用を検討する必要があります。そのためには、allow_snapshot_isolation オプションを On に設定します。このオプションはプライマリサーバとミラーサーバの両方に対して有効なので、スナップショットアイソレーションに関連するコストを考慮する必要があります。

ミラーデータベースへの接続は、プライマリサーバに対するトランザクションの影響を受けます。これらの操作は、その後ミラーサーバによって処理され適用されるからです。プライマリサーバ上の更新がコミットされてから、その更新がミラーサーバ上で使用可能になるまでには、わずかな遅延があります。通常この遅延は短時間ですが、ミラーサーバ上で実行されるデータベースにアクセスするときは、このことを念頭においてください。

フェイルオーバが発生してミラーサーバがプライマリサーバになっても、ミラーデータベースへの接続は維持されます。フェイルオーバ後は、接続によってデータベースに変更を加えることができます。接続先のデータベースが更新可能かどうかを確認するには、ReadOnly データベースプロパティの値を問い合わせます。

SELECT DB_PROPERTY( 'ReadOnly' );

コピーノードまたはミラーデータベースでの接続は、トランザクションログの適用を阻害しているとき、一部の場合削除されるかキャンセルされます。たとえば、トランザクションログが変更または削除しようとしているプロシージャが接続で使用されている場合は、トランザクションログが適用されないようにブロックしている接続が削除され、サーバコンソールにメッセージが出力されます。

 参照