1. ホーム
  2. sql-server-2005

[解決済み] MARS (Multiple Active Result Sets)のデメリットとは?

2023-03-24 18:04:59

質問

MARS (Multiple Active Result Sets) のデメリットをご存知の方はいらっしゃいますか? また、カーソルが MARS よりも有用である場合など、MARS の使用を避けるべき理由をご存知の方はいらっしゃいますか。

どのように解決するのですか?

少なくとも2つの既知の(潜在的な)欠点があるようです(この(1)より チーム ブログ ):

  1. 明らかに、これは MARS を有効にした設計に対して実行するように設計されていないレガシー システムの潜在的な問題を引き起こす可能性があります。 MARS 以外の世界で動作するように最適化された既存のコードは、MARS で変更せずに実行した場合、パフォーマンスがわずかに低下する可能性があります。

  2. 「MARS を使用すると、複数のマルチステートメント バッチをサーバーに送信することができます。サーバーはそのようなバッチの実行をインターリーブします。つまり、バッチが例えば SET や USE ステートメントによってサーバーの状態を変更したり、TSQL トランザクション管理ステートメント (BEGIN TRAN, COMMIT, ROLLBACK) を使用すると、あなたとサーバーの両方が実際の意図が何であるかについて混乱する可能性があります。"

私はまだ MARS を有効にした設計を試したことがありませんが、現在のプロジェクトでそれを行うのに非常に近いところまで来ています。 競合する (そして時には依存する) クエリ操作 (アクティブなレコードセットが実行されているのと同じデータベースから設定データを遅延ロードするような) に若干の問題があるのです。

MSDN サイトに詳細な情報があります。 (2) にあります。

[ (1) https://web.archive.org/web/20190911155929/https://blogs.msdn.microsoft.com/sqlnativeclient/2006/09/27/using-mars-with-sql-native-client/ ]

[ (2) http://msdn.microsoft.com/en-us/library/ms131686.aspx ]