টেবিল ইঙ্গিতগুলির ব্যবহার নিয়ে গবেষণা করার সময় , আমি এই দুটি প্রশ্ন পেয়েছি:
উভয় প্রশ্নের উত্তরগুলি বলে যে ব্যবহার করার সময় (UPDLOCK, HOLDLOCK)
, অন্যান্য প্রক্রিয়াগুলি সেই টেবিলের ডেটা পড়তে সক্ষম হবে না, তবে আমি এটি দেখিনি। পরীক্ষা করতে, আমি একটি টেবিল তৈরি করেছি এবং দুটি এসএসএমএস উইন্ডো শুরু করেছি। প্রথম উইন্ডো থেকে, আমি একটি লেনদেন চালিয়েছি যা বিভিন্ন টেবিলের ইঙ্গিত ব্যবহার করে টেবিল থেকে নির্বাচন করেছে। লেনদেন চলমান থাকাকালীন, দ্বিতীয় উইন্ডো থেকে আমি বিভিন্ন স্টেটমেন্ট চালিয়েছিলাম যা দেখতে অবরুদ্ধ হবে।
পরীক্ষার টেবিল:
CREATE TABLE [dbo].[Test](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Value] [nvarchar](50) NULL,
CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
এসএসএমএস উইন্ডো 1 থেকে:
BEGIN TRANSACTION
SELECT * FROM dbo.Test WITH (UPDLOCK, HOLDLOCK)
WAITFOR DELAY '00:00:10'
COMMIT TRANSACTION
এসএসএমএস উইন্ডো 2 থেকে (নিম্নলিখিতগুলির মধ্যে একটি রান করেছেন):
SELECT * FROM dbo.Test
INSERT dbo.Test(Value) VALUES ('bar')
UPDATE dbo.Test SET Value = 'baz' WHERE Value = 'bar'
DELETE dbo.Test WHERE Value= 'baz'
উইন্ডো 2 তে চলমান বিবৃতিগুলিতে বিভিন্ন টেবিলের ইঙ্গিতগুলির প্রভাব:
(UPDLOCK) (HOLDLOCK) (UPDLOCK, HOLDLOCK) (TABLOCKX)
---------------------------------------------------------------------------
SELECT not blocked not blocked not blocked blocked
INSERT not blocked blocked blocked blocked
UPDATE blocked blocked blocked blocked
DELETE blocked blocked blocked blocked
আমি কি এই প্রশ্নগুলিতে দেওয়া উত্তরগুলি ভুল বুঝেছি, বা আমার পরীক্ষায় ভুল করেছি? যদি তা না হয় তবে আপনি কেন (UPDLOCK, HOLDLOCK)
বনাম বনাম ব্যবহার (HOLDLOCK)
করবেন?
আমি কী অর্জন করতে চাই তার আরও ব্যাখ্যা:
আমি কোনও টেবিল থেকে সারিগুলি নির্বাচন করতে চাই এবং প্রসেস করার সময় সেই টেবিলের ডেটা পরিবর্তন করতে বাধা দিতে চাই। আমি সেই ডেটাটি সংশোধন করছি না, এবং পাঠগুলি ঘটতে দেওয়াতে চাই।
এই উত্তরটি পরিষ্কারভাবে বলেছে যে (UPDLOCK, HOLDLOCK)
পাঠ্যগুলিকে ব্লক করবে (আমি যা চাই তা নয়)। এই উত্তরের মন্তব্যগুলি বোঝায় যে এটি হ'ল HOLDLOCK
পাঠকে বাধা দেয়। টেবিলের ইঙ্গিতগুলির প্রভাবগুলি আরও ভালভাবে বোঝার জন্য এবং দেখতে চাই যে UPDLOCK
একা আমি যা চাইছিলাম তা করতে পারি, আমি উপরের পরীক্ষাটি করেছিলাম এবং ফলাফল পেয়েছি যা এই উত্তরগুলির সাথে বিরোধী।
বর্তমানে, আমি বিশ্বাস করি (HOLDLOCK)
এটিই আমার ব্যবহার করা উচিত তবে আমি উদ্বিগ্ন যে আমি কোনও ভুল করেছি বা এমন কিছু উপেক্ষা করেছি যা ভবিষ্যতে আমাকে কামড়ানোর জন্য ফিরে আসবে, এই কারণেই এই প্রশ্নটি।