কেন অনলাইনে তৈরি করুন… অন লাইন দিয়ে = কয়েক মিনিটের মধ্যে টেবিলটিতে অ্যাক্সেস আটকাবেন?


22

আমার একটি বিদ্যমান টেবিল রয়েছে:

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।

উত্তর:


23

অনলাইনে = অন দিয়ে একটি সূচক তৈরি করার সময়, সূচী অবজেক্টটি তৈরি করার সময় তৈরি সূচক প্রক্রিয়াটি আটকাবে না, তবে প্রক্রিয়াটির সমাপ্তি যখন আসে তখন এটি একটি সময়ের জন্য স্কিমা পরিবর্তন লক * অর্জন করবে সারণীতে সূচকটি যুক্ত করুন, লকটি প্রকাশ না হওয়া অবধি এই লক টাইপটি বাইরের সমস্ত ক্রিয়াকলাপ অবরুদ্ধ করে দেবে, যা আপনার অবরুদ্ধকরণ সমস্যার কারণ হতে পারে।

* Sch-Mনতুন অবিচ্ছিন্ন সূচকের অনলাইন বিল্ডিংয়ের জন্য একটি লক প্রয়োজন হয় না, যদিও অন্য সমস্ত ক্ষেত্রে এটি প্রয়োজন। একটি নতুন অবিচ্ছিন্ন সূচককে প্রস্তুতির পর্যায়ে যেমন চূড়ান্ত পর্যায়ে প্রয়োজন ছিল কেবল তেমন একটি টেবিল-স্তরের ভাগ করা লক প্রয়োজন।

বিস্তারিত জানার জন্য এই হোয়াইট পেপারটি দেখুন:

এসকিউএল সার্ভার 2005-এ অনলাইন ইনডেক্সিং অপারেশনস

যেমনটি সম্পর্কে একটি মন্তব্যে মোশতাক মোহাম্মদ পরামর্শ দিয়েছেন , আরও দেখুন:

পল র্যান্ডাল দ্বারা ইউনিকর্নস, রেইনবো এবং অনলাইন সূচক ক্রিয়াকলাপ

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