আমার একটি বিদ্যমান টেবিল রয়েছে:
CREATE TABLE dbo.ProofDetails
(
ProofDetailsID int NOT NULL
CONSTRAINT PK_ProofDetails
PRIMARY KEY CLUSTERED IDENTITY(1,1)
, ProofID int NULL
, IDShownToUser int NULL
, UserViewedDetails bit NOT NULL
CONSTRAINT DF_ProofDetails_UserViewedDetails
DEFAULT ((0))
);
এই টেবিলটিতে 150,000,000 সারি রয়েছে। সিস্টেমটি 24x7x365 চালু রয়েছে, তাই নিয়মিত কোনও রক্ষণাবেক্ষণ উইন্ডো নেই।
আমি টেবিলটিতে একটি সূচক যুক্ত করতে চাই এবং এসকিউএল সার্ভারের এন্টারপ্রাইজ সংস্করণটি সহ আমার টেবিলে লেখার প্রবেশাধিকার অবরুদ্ধ না করে তা করতে সক্ষম হওয়া উচিত। আমি যে আদেশটি ব্যবহার করেছি তা হ'ল:
CREATE INDEX IX_ProofDetails_ProofID_Etc
ON dbo.ProofDetails (ProofID, IDShownToUser)
INCLUDE (UserViewedDetails)
WITH (ONLINE=ON
, ALLOW_ROW_LOCKS=ON
, ALLOW_PAGE_LOCKS=ON
, FILLFACTOR=100
, MAXDOP=4
);
আমি এসএসএমএসে, চাপ দিয়ে নিজেই বিবৃতিটি কার্যকর করেছি F5। এটি এক মিনিটেরও বেশি সময় ধরে চলেছিল, তারপরে অন্যান্য সেশনগুলিতে ব্লক করা শুরু করে। আমি তখনই CREATE INDEX
কমান্ডটি বাতিল করে দিয়েছি যেহেতু আমি অন্যান্য সেশনগুলি ব্লক করতে পারি না।
প্রথম মিনিটের সময় কোনও কিছুই আমার CREATE INDEX
কমান্ডকে বাধা দিচ্ছিল না - অবশ্যই sys.dm_exec_requests
অপেক্ষার প্রকারের সাথে প্রক্রিয়াটি দেখিয়েছিল CXPACKET
- অবশ্যই। অপারেশনটি সমান্তরাল হওয়ার পরেও এটি একটি খারাপ জিনিস বলে আমি মনে করি না।
এর আউটপুট পরিদর্শন করার জন্য আমার খুব বেশি সময় ছিল না sys.dm_exec_requests
। ক্যোয়ারী থেকে কেবল একটি একক সারি ফিরে এসেছিল WHERE session_id = xxx
। অবরুদ্ধ সেশনগুলি লক্ষ্য সারণিতে সারি সন্নিবেশ করানোর চেষ্টা করছিল।
আমি জানি না কতক্ষণ পর্যন্ত লক টিকেছিল, আমি এই বক্তব্যটি শুরু হওয়ার প্রায় 2 মিনিটের পরে প্রায় বাতিল করে দিয়েছিলাম except এই মুহুর্তে প্রায় এক মিনিটের জন্য ব্লকগুলি ঘটেছিল।
আমি কি বাস্তবায়নের ভুল বোঝাবুঝি করছি WITH (ONLINE=ON)
? বা আমার আরও কিছু সচেতন হওয়া দরকার?
সার্ভারটি মোটামুটি বিফাই মেশিন, 2 কোয়াড-কোর জিয়ন ই 5-2643 3.3 গিগাহার্টজ প্রসেসর, 192 গিগাবাইট র্যাম এবং সান স্টোরেজ 5,000+ আইওপ্স সক্ষম with সিপিইউ সাধারণত 20% এর নীচে থাকে, র্যাম 93% ব্যবহার করে থাকে, বেশিরভাগ এসকিউএল সার্ভার দ্বারা। বাক্সে আর কিছুই চলছে না, কেবল উইন্ডোজ সার্ভার 2012 এবং এসকিউএল সার্ভার 2012।