ডিএমভিগুলি পড়ার সময় অনাবৃত পড়ুন সেট করা


12

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDসিস্টেম ডিএমভি পড়ার আগে আমি বেশ কয়েকজনকে কল করতে দেখেছি । আপনি কি একই রকম লেনদেনে ডিএমভি এবং টেবিলগুলিতে কল মিশ্রিত করছেন না তা ধরে নিয়ে কি এমন কোনও কারণ আছে?


1
আপনার মনে কি কোনও নির্দিষ্ট ডিএমভি আছে? (সম্প্রতি একটি উদাহরণ আমি লক্ষ্য করেছি এখানে sqlskills.com / ব্লগস / জোনাথন/… )
মার্টিন স্মিথ

যেহেতু জোনাথন এটি করছে, আমার সন্দেহ হয় কিছু পরিস্থিতিতে অবশ্যই কারণ আছে। ☺ আমাকে অনুরোধ জানানো কোন প্রশ্নের একটি ক্যোয়ারী যে যোগদান এটা এইজন্য ছিল জিজ্ঞাসা করতে sys.dm_exec_query_statsকরতে sys.dm_exec_sql_textএবং sys.dm_exec_query_plan
জেমস এল

উত্তর:


11

যেহেতু কোনও একজন ডেমো ডিএমভি কোয়েরিগুলি সেভাবে লিখেছেন, আমি কেন তা ব্যাখ্যা করব।

আপনি যদি কেবলমাত্র ডিএমভি অনুসন্ধান করেই থাকেন তা কি বিবেচনা করে ? না। তবে খুব শীঘ্রই আপনি আপনার ডিএমভি স্ক্রিপ্টগুলির একটি নিতে যাচ্ছেন এবং আপনি কী খুঁজছেন সে সম্পর্কে আরও তথ্য পেতে সিস.ড্যাব ডাটাবেসগুলি বা সিস. টেবিলগুলি বা অন্য কোনও সিস্টেমের অবজেক্টে যোগ দেওয়ার জন্য ট্যাক করতে চলেছেন। যদি আপনি সেখানে বিনা অনুমতিতে পড়ে থাকেন তবে আপনার অন্যান্য ক্যোয়ারী দ্বারা ব্লক করা যেতে পারে এবং অন্যান্য প্রশ্নগুলি ব্লক করতে পারে। আমি বার বার এটি দ্বারা জ্বলিত হয়েছি, তাই আমি যখনই কোনও ডায়াগনস্টিক কাজ করছি তখনই আমি কেবলমাত্র ডিফল্টরূপে UNCOMMITTED পড়ুন।


1
@ মার্টিনস্মিত এটি কিছুটা সময় নিয়েছিল, তবে অবশেষে কতগুলি মেটাডেটা ফাংশন বিচ্ছিন্নতা স্তরকে উপেক্ষা করে তা সম্পর্কে আমি ব্লগ করেছি । আমি আমার কোড অনেকটা পরিষ্কার করতে চেষ্টা করেছি, কিন্তু নতুন কিছু আমি গড়ে তুলেছি যেহেতু তারপর পছন্দ বরং ভালো বিল্ট-ইন চেয়ে যোগদান করে OBJECT_ID(), SCHEMA_NAME()ইত্যাদি
হারুন বারট্রান্ড

7

আমি দেখতে পাচ্ছি না যে এটি কোনও পার্থক্য করে।

যদি আমি নিম্নলিখিতটি চেষ্টা করি এবং উভয় বিচ্ছিন্ন স্তরের জন্য লক আউটপুটটিকে উইনমার্সের সাথে তুলনা করি তবে তারা হুবহু একই (এবং এমনকি এটি SERIALIZABLEআউটপুট পরিবর্তন না করে)।

/*Do once so compilation and caching out the way*/
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')

DBCC TRACEON(1200,3604,-1);

SET TRANSACTION ISOLATION LEVEL READ COMMITTED
PRINT 'READ COMMITTED'
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
PRINT 'READ UNCOMMITTED'
EXEC('select st.text, qp.query_plan, cp.cacheobjtype, cp.objtype, cp.plan_handle
from sys.dm_exec_cached_plans cp 
cross apply sys.dm_exec_sql_text(cp.plan_handle) st
cross apply sys.dm_exec_query_plan(cp.plan_handle) qp')

DBCC TRACEOFF(1200,3604,-1);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.