শেয়ারড লকটি আইসোলেশন লেভেল-এ জারি করা হয়েছে e


10

আমি পড়েছি যে আমি যদি আইসোলেশন লেভেল ব্যবহার করি Rআডআউডমন্ডিত, কোয়েরিতে কোনও লক দেওয়া উচিত নয়। যাইহোক, আমি যখন এটি পরীক্ষা করেছি তখন আমি নীচের লকটি দেখেছি:

সংস্থান_প্রকার: HOBT
অনুরোধ_মোড: এস (ভাগ করা)

এইচওবিটি লক কী? এইচবিটি (হিপ বা বাইনারি ট্রি লক) সম্পর্কিত কিছু?

আমি এখনও এস লক পাব কেন?

বিচ্ছিন্নতা স্তরের স্ন্যাপশট বিকল্পটি চালু না করে জিজ্ঞাসা করার সময় আমি কীভাবে ভাগ করা লকিং এড়াতে পারি?

আমি এটি এসকিউএল সার্ভার ২০০৮-এ পরীক্ষা করছি এবং স্ন্যাপশট বিকল্পটি সেট আপ করা আছে। ক্যোয়ারী কেবল একটি নির্বাচন সম্পাদন করে।

আমি দেখতে পাচ্ছি যে এসਚএল-এস প্রয়োজনীয়, যদিও এসকিউএল সার্ভারটি এটি আমার লক ক্যোয়ারীতে প্রদর্শিত হচ্ছে না বলে মনে হচ্ছে। এটি কীভাবে এখনও একটি ভাগ করা লক ইস্যু করে? অনুসারে:

লেনদেন বিচ্ছিন্নকরণ স্তর সেট করুন (লেনদেন এসকিউএল)

READ UNCOMMITTEDস্তরে চলমান লেনদেনগুলি অন্যান্য লেনদেনকে বর্তমান লেনদেন দ্বারা পঠিত ডেটা পরিবর্তন করতে বাধা দেওয়ার জন্য ভাগ করা লকগুলি সরবরাহ করে না।

তাই আমি কিছুটা বিভ্রান্ত।

উত্তর:


13

এইচওবিটি লক কী?

একটি তালা একটি বি-ট্রি (সূচী) বা একটি টেবিলের হিপ ডেটা পৃষ্ঠাগুলি সুরক্ষিত করে যা একটি ক্লাস্টার ইনডেক্স নেই।

আমি এখনও এস লক পাব কেন?

এটি স্তূপে ঘটে। উদাহরণ

SET NOCOUNT ON;

DECLARE @Query nvarchar(max) = 
   N'DECLARE @C INT; 
     SELECT @C = COUNT(*) FROM master.dbo.MSreplication_options';

/*Run once so compilation out of the way*/
EXEC(@Query);

DBCC TRACEON(-1,3604,1200) WITH NO_INFOMSGS;

PRINT 'READ UNCOMMITTED';
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
EXEC(@Query);

PRINT 'READ COMMITTED';
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
EXEC(@Query);

DBCC TRACEOFF(-1,3604,1200) WITH NO_INFOMSGS;

আউটপুট READ UNCOMMITTED

Process 56 acquiring Sch-S lock on OBJECT: 1:1163151189:0  (class bit0 ref1) result: OK

Process 56 acquiring S lock on HOBT: 1:72057594038910976 [BULK_OPERATION] (class bit0 ref1) result: OK

Process 56 releasing lock on OBJECT: 1:1163151189:0 

আউটপুট READ COMMITTED

Process 56 acquiring IS lock on OBJECT: 1:1163151189:0  (class bit0 ref1) result: OK

Process 56 acquiring IS lock on PAGE: 1:1:169 (class bit0 ref1) result: OK

Process 56 releasing lock on PAGE: 1:1:169

Process 56 releasing lock on OBJECT: 1:1163151189:0 

এই নিবন্ধ অনুসারে পল রান্ডালকে রেফারেন্স করে এই BULK_OPERATIONভাগ করা এইচওবিটি লক নেওয়ার কারণটি হ'ল অনঠিত পৃষ্ঠাগুলি পড়া আটকাতে।


5

ReadUncommitted বিচ্ছিন্নতা স্তর লকগুলি অর্জন করে। স্কিমা স্থিতিশীলতা লকগুলি কোয়েরি সম্পাদন করার সময় বস্তুগুলিকে ক্যোয়ারী পরিবর্তন হতে বাধা দেয়। এই লকগুলি স্ন্যাপশট এবং পঠন_কমিত_স্ন্যাপশট (আরসিএসআই) সহ সমস্ত বিচ্ছিন্ন লেভেলের অধীনে অর্জিত হয়। লক মোড থেকে :

স্কিমা লকস

ডাটাবেস ইঞ্জিনটি একটি টেবিল ডেটা সংজ্ঞা ভাষার (ডিডিএল) ক্রিয়াকলাপের সময় স্কিমা পরিবর্তন (স্ক-এম) লক ব্যবহার করে যেমন কলাম যুক্ত করা বা একটি টেবিল বাদ দেওয়া। এটি অনুষ্ঠিত হওয়ার সময়, এস-এম লকটি টেবিলে একযোগে অ্যাক্সেস প্রতিরোধ করে। এর অর্থ এস-এম লকটি লকটি প্রকাশ না হওয়া পর্যন্ত বাইরের সমস্ত ক্রিয়াকলাপ অবরুদ্ধ করে।

কিছু ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (ডিএমএল) ক্রিয়াকলাপ, যেমন টেবিল কাটা, সমবর্তী ক্রিয়াকলাপ দ্বারা প্রভাবিত টেবিলগুলিতে অ্যাক্সেস রোধ করতে Sch-M লকগুলি ব্যবহার করে।

ডেটাবেস ইঞ্জিন কোয়েরিগুলি সঙ্কলন ও সম্পাদন করার সময় স্কিমা স্থিতিশীলতা (Sch-S) লক ব্যবহার করে। Sch-S লকগুলি এক্সক্লুসিভ (এক্স) লক সহ কোনও লেনদেনের লকগুলিকে অবরুদ্ধ করে না। সুতরাং, কোনও টেবিলের এক্স লক সহ অন্যান্য লেনদেনগুলি চলতে থাকে, যখন কোনও প্রশ্নের সংকলন করা হচ্ছে। তবে, একযোগে ডিডিএল ক্রিয়াকলাপ, এবং সম-ডিএমএল অপারেশনগুলি যা Sch-M লকগুলি অর্জন করে, টেবিলে সম্পাদন করা যায় না।

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