2

MSSQLからへのリンク サーバー クエリを使用していますmySqlMySqlクエリ対象のテーブルには 800K + レコードがあります

一時テーブルを使用してリンク サーバーから結果を取得し、その一時テーブルで SQL クエリの結合を行っています。

以下の間にパフォーマンスの違いはありますか?

Declare
@MyString varchar(max),
@Address varchar(20),
@tempTable (Address, ColumnB, ColumnC)


set @MyString  = 'Select Address, ColumnB, ColumnC from schemaname.tablename where ''' + convert(varchar(30),@Address) + ''') order by ColumnB desc limit 10'

set @MyString  = 'Select * from Openquery([My_Linked_Server], ''' + REPLACE(@MyString, '''', '''''') + ''')'

insert into @tempTable
exec (@MyString) 

Set @MyString = 'Select Address, ColumnB, ColumnC from schemaname.tablename where ''' + convert(varchar(30),@Address) + ''') order by ColumnB desc limit 10'

exec (@MyString) at My_Linked_Server

(これはすべて で行われますSQL) --second アプローチで現在エラーが発生しています:

リンク サーバー "My_Linked_Server" の OLE DB プロバイダー "MSDASQL" がメッセージ "[MySQL][ODBC 5.2(w) Driver] Optional feature not supported" を返しました。メッセージ 7391、レベル 16、状態 2、行 14 リンク サーバー "My_Linked_Server" の OLE DB プロバイダー "MSDASQL" が分散トランザクションを開始できなかったため、操作を実行できませんでした。

DTCが開始されました

これを使用する際のもう 1 つの問題は、結果のタイミングが 1 秒から 1 分でランダムになることです。

前もって感謝します!

アップデート:

最初のアプローチは非常に良い結果をもたらします。残っている唯一の問題は、結果のランダムなタイミングです。80% 以上の場合、結果はすぐに得られます。これは、MySqlテーブル ロック (タイプ のテーブルMyISAM) が原因である可能性があります。これは、このテーブルへの絶え間ない書き込みと、使用状況情報のSQL Serverクエリで追加のジョブが実行されているためです。MySQL

これは遅延の合理的な説明ですか?

4

1 に答える 1

2

MSDTC の問題をデバッグするのは少し面倒です。実行中とおっしゃいましたが、両方のサーバーで実行されていますか? サーバー間にファイアウォールがありますか - 各サーバーが他のサーバーに DTCP できることを確認する必要があります。DTCPing は、ダウンロードできる MS ユーティリティです。許可の問題も発生する可能性があります。

DTC のパフォーマンスが非常に悪い場合もありますが、これは通常、帯域幅とラウンドトリップ時間の問題、またはトランザクションが大きい場合のメモリ消費が原因です。私の知る限り、MSDTC以外の同等のものよりも常に遅いです-それらが実際に同等であると仮定すると

個人的には、MSDTC を完全に回避するようにクエリを書き直すことができれば、通常は結果に満足しています。リモート サーバーに exec proc の出力を挿入すると、MSDTC が常に呼び出されます。

おそらく、より詳細に説明した場合、ランダムなタイミングに関する実際のアドバイスはありません。

この記事から DTC Ping に関する情報を追加

DTCPING は、リモート マシンに対して匿名の RPC 呼び出しを行います

XP、SP2から、デフォルトでは、リモートマシンは匿名の呼び出しを受け入れないため、アクセス拒否のエラーメッセージ(OX5エラーコード)が表示されます

RestrictRemoteClients キーを無効にすると、リモート マシンは匿名の呼び出しを受け入れます

http://msdn.microsoft.com/security/productinfo/XPSP2/networkprotection/restrict_remote_clients.aspx

これは単なる DTCPING ツールの問題であり、このエラーは DTC とは関係ありません。

于 2013-09-10T12:47:06.630 に答える