からMSSQL
へのリンクサーバークエリを使用していますmySql
。MySql
照会するテーブルには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
)-2番目のアプローチは現在私にエラーを与えています:
リンクサーバー「My_Linked_Server」のOLEDBプロバイダー「MSDASQL」が「[MySQL] [ODBC5.2(w)ドライバー]オプション機能はサポートされていません」というメッセージを返しました。メッセージ7391、レベル16、状態2、行14リンクサーバー "My_Linked_Server"のOLEDBプロバイダー "MSDASQL"が分散トランザクションを開始できなかったため、操作を実行できませんでした。
DTCが開始されます
これを使用する際のもう1つの問題は、結果のタイミングが1秒から1分になることです。
前もって感謝します!
更新:
最初のアプローチは非常に良い結果をもたらします。残っている唯一の問題は、結果のランダムなタイミングです。結果は80%以上が瞬時に発生します。これは、MySql
テーブルロック(タイプのテーブルMyISAM
)が原因である可能性があります。これは、このテーブルへの書き込みが常に行われ、使用情報のSQL Server
クエリMySQL
で追加のジョブが実行されているためです。
これは遅延の合理的な説明ですか?
MSDTCの問題のデバッグは、少し面倒な場合があります。あなたはそれが実行されていると言いました、それは両方のサーバーで実行されていますか?サーバー間にファイアウォールがありますか?各サーバーが他のサーバーをDTCPできることを確認する必要があります。DTCPingは、ダウンロードできるMSユーティリティです。権限の問題も発生する可能性があります。
DTCのパフォーマンスは時々かなりひどいことがありますが、これは通常、帯域幅とラウンドトリップ時間の問題、またはトランザクションが大きい場合のメモリ消費が原因です。私の知る限り、MSDTC以外の同等のものよりも常に低速です-それらが実際に同等であると仮定すると
個人的には、MSDTCを完全に回避するようにクエリを書き直すことができれば、通常は結果に満足しています。exec procの出力をリモートサーバーに挿入すると、MSDTCが常に呼び出されます。
ランダムなタイミングについての実際のアドバイスはありません。おそらく、より詳細に説明した場合です。
この記事からDTCPingに関する情報を追加しました
DTCPINGは、リモートマシンに対して匿名のRPC呼び出しを行います
xp、sp2から、デフォルトでは、リモートマシンは匿名の呼び出しを受け入れないため、アクセス拒否のエラーメッセージ(OX5エラーコード)が表示されます。
RestrictRemoteClientsキーを無効にすると、リモートマシンは匿名の通話を受け入れます
http://msdn.microsoft.com/security/productinfo/XPSP2/networkprotection/restrict_remote_clients.aspx
これは単なるDTCPINGツールの問題です。このエラーはDTCとは関係ありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加