দেখে মনে হচ্ছে টি-এসকিউএল কার্যকর করার গতিটি সার্ভারের বিরুদ্ধে নেটওয়ার্ক সংযোগের বিলম্বের উপর নির্ভরশীল। আমি ধরে নিয়েছিলাম যে এসকিউএল সার্ভারের যদি ক্লায়েন্টকে পুনরায় রিপোর্ট করার মতো কিছু না থাকে তবে এটি শেষ না হওয়া পর্যন্ত এটি কার্যকর করা হবে তবে টেস্টিং অন্য গল্প দেখায়।
create procedure UselessLoop
@I int
as
declare @D datetime = getdate()
while @I > 0 set @I -= 1
print datediff(millisecond, @D, getdate())
exec UselessLoop 100000
Server Milliseconds
local 53
nearby 63
faraway 660
exec UselessLoop 1000000
Server Milliseconds
local 546
nearby 640
faraway 6183
এসএসএমএস ব্যবহার করে বিভিন্ন কম্পিউটার থেকে একই সার্ভারের বিরুদ্ধে পরীক্ষা চালানো হয়। স্থানীয় সার্ভার থেকে কার্যকর করা হয়, কাছাকাছি একই স্থানীয় নেটওয়ার্কে রয়েছে এবং 1 গিগাবিট ফাইবারের সাথে সংযুক্ত 500 কিলোমিটার দূরের অন্য অফিস থেকে দূরে কার্যকর করা হয়।
স্পষ্টতই এসকিউএল সার্ভার এবং ক্লায়েন্টের মধ্যে কিছু যোগাযোগ চলছে যা সম্পাদন করা বিবৃতিগুলির সংখ্যার উপর সরাসরি নির্ভর করে।
আমি ওয়্যারশার্ককে কী পরিবহণ করা হয়েছে তা দেখার জন্য ব্যবহার করেছি এবং আমি এটি বলতে পারি না যে আমি এটি অনেক কিছুই বুঝতে পেরেছি তবে এটি ছিল একটি টিসিপি.স্ট্রিম 22740 প্যাকেটে মোট 26 এমবি এক্সচেঞ্জ করে।
পরিবর্তে একটি অকেজো কর্ম সম্পর্কে?
create function dbo.UDFUselessLoop(@I int)
returns int
as
begin
declare @D datetime = getdate()
while @I > 0 set @I -= 1
return datediff(millisecond, @D, getdate())
end
print dbo.UDFUselessLoop(1000000)
এটি কোথা থেকে নির্বাহ করা হয় নির্বিশেষে 406 মিলিসেকেন্ডে এটি কার্যকর করে। দেখে মনে হচ্ছে লুপটিতে ক্লায়েন্টের সাথে কোনও যোগাযোগ নেই।