আমি যখন সারিগুলি মুছব তখন কেন আমার অবিচ্ছিন্ন সূচকগুলি আরও স্থান ব্যবহার করে?


22

আমার কাছে 7.5 বিলিয়ন সারি এবং 5 সূচক সহ একটি বড় টেবিল রয়েছে। আমি যখন প্রায় 10 মিলিয়ন সারি মুছে ফেলি, তখন আমি লক্ষ্য করব যে অবিবাহিত সূচীগুলি তারা সঞ্চিত পৃষ্ঠাগুলির সংখ্যা বাড়িয়ে দেবে বলে মনে হয়।

dm_db_partition_statsপৃষ্ঠাগুলিতে পার্থক্যটি (আগে - পরে) রিপোর্ট করার জন্য আমি একটি কোয়েরি লিখেছিলাম :

dm_db_ পার্টিশন_স্ট্যাটস ডেল্টাস

সূচক 1 হ'ল ক্লাস্টার্ড সূচক, সূচক 2 হল প্রাথমিক কী। অন্যগুলি অবিচ্ছিন্ন এবং অদ্বিতীয়।

এই নন-ক্লাস্টারযুক্ত সূচীতে পৃষ্ঠা কেন বাড়ছে?
আমি প্রত্যাশা করেছি যে সংখ্যাগুলি সবচেয়ে খারাপ সময়ে একই থাকবে।
আমি দেখতে পাচ্ছি পারফরম্যান্স কাউন্টারগুলি মোছার সময় পৃষ্ঠা-বিভাজনগুলি বাড়ানোর প্রতিবেদন করে।

মোছার সময়, ভূতের রেকর্ডটি কি অন্য কোনও পৃষ্ঠায় যেতে হবে? এটি কি "ইউনিকলিফায়ার" এর সাথে সম্পর্কযুক্ত?

আমরা আরসিএসআই রোল আউট করার মাঝখানে রয়েছি, তবে এখনই আরসিএসআই বন্ধ রয়েছে।

এটি একটি প্রাপ্যতা গোষ্ঠীর একটি প্রাথমিক নোড। আমি জানি যে স্ন্যাপশটটি কোনওভাবে সেকেন্ডারিগুলিতে ব্যবহৃত হয়। যদি এটি প্রাসঙ্গিক হত তবে আমি অবাক হব। আরও শিখতে আমি এটি (ডিবিসিসি পৃষ্ঠার আউটপুটটি অনুসন্ধান) খনন করার পরিকল্পনা করছি। এখানে আশা করা যায় যে কেউ একই রকম কিছু দেখেছেন।


কেবল একটি প্রশ্ন - যে সূচকগুলি বেড়েছে তার একটিতে একটি REOGANIZE চালানো, কী ঘটে? কত পৃষ্ঠা মুছে ফেলা হয়? আপনি যদি মুছে ফেলার আগে পুনর্গঠন করেন তবে কি হবে? আমি বেশিরভাগ ক্ষেত্রেই ভাবছি যে অভ্যন্তরীণ প্রক্রিয়াগুলি কোনও কোনও ক্ষেত্রে সম্পূর্ণ নতুন পৃষ্ঠা বরাদ্দ করা এবং মার্জ করা সহজতর হতে পারে তবে খালি পৃষ্ঠাগুলি পরিষ্কার করে না। আমি জানি যে পুনর্গঠন অপেক্ষাকৃত অনাগ্রহিত তবে বৃহত্তর সূচকগুলিতে উল্লেখযোগ্য পরিমাণে পৃষ্ঠাগুলি বাদ দেয়।
হাসছেন ভার্জিল

ভাল প্রশ্ন @ লাফিং ভার্জিল আমার কাছে উত্তর থাকলে আমি এখানে এটি রিপোর্ট করতে ফিরে আসব। (তবে এটি কিছুটা সময় নিতে পারে)।
মাইকেল জে স্বার্ট

আমাদের ক্ষেত্রে, এই বৃদ্ধিটি একটি অস্থায়ী ঘটনা ছিল। পর্যাপ্ত ধৈর্য সহ, ভূত সাফাই অবশেষে কাজটি কাজ করে এবং সূচকের আকার হ্রাস পায়।
মাইকেল জে স্বার্ট

উত্তর:


28

একটি সম্ভাব্য দৃশ্য যা আমাকে খুব আনন্দ দেয়:

  • সারণিটি মূলত তখন লেখা হয়েছিল যখন ডাটাবেসে কমিটেড স্ন্যাপশট (আরসিএসআই), স্ন্যাপশট বিচ্ছিন্নতা (এসআই), বা উপলভ্যতা গোষ্ঠীগুলি (এজি) সক্ষম করা হয়নি written
  • আরসিএসআই বা এসআই সক্ষম হয়েছিল, বা ডাটাবেসটি একটি উপলভ্যতা গোষ্ঠীতে যুক্ত করা হয়েছিল
  • মুছে ফেলার সময়, আরসিএসআই / এসআই / এজি পড়ার সমর্থনে মুছে ফেলা সারিগুলিতে একটি 14-বাইট টাইমস্ট্যাম্প যুক্ত করা হয়েছিল

যেহেতু এই সার্ভারটি একটি এজিতে প্রাথমিক, তাই এটি দ্বিতীয় স্তরের মতোই প্রভাবিত হয়। সংস্করণ তথ্য প্রাথমিকটিতে যুক্ত করা হয়েছে - তথ্য পৃষ্ঠাগুলি উভয় প্রাইমারি এবং সেকেন্ডারিগুলিতে হুবহু একই। সেকেন্ডারিগুলি এজি দ্বারা সারিগুলি আপডেট করার সময় সংস্করণ স্টোরটি তাদের পড়ার জন্য উত্তোলন করে তবে সেকেন্ডারিগুলি টাইমস্ট্যাম্পের নিজস্ব সংস্করণগুলি পৃষ্ঠায় লেখেনি। তারা কেবল প্রাথমিকের কাজ থেকে সংস্করণগুলির উত্তরাধিকারী।

বৃদ্ধিটি দেখানোর জন্য, আমি স্ট্যাক ওভারফ্লো ডেটাবেস এক্সপোর্ট নিয়েছি (এতে আরসিএসআই সক্ষম করা নেই) এবং পোস্ট টেবিলের উপর একাধিক সূচি তৈরি করেছি। আমি sp_BlitzIndex @ মোড = 2 দিয়ে সূচক আকারগুলি পরীক্ষা করেছি (স্প্রেডশিটে অনুলিপি / আটকানো হয়েছে এবং তথ্য ঘনত্বকে সর্বাধিকীকরণ করতে কিছুটা সাফ করেছি):

sp_BlitzIndex এর আগে

আমি তখন প্রায় অর্ধেক সারি মুছে ফেলেছি:

BEGIN TRAN;
DELETE dbo.Posts WHERE Id % 2 = 0;
GO

মজাদারভাবে, মুছে ফেলার সময়, ডেটা ফাইলটি টাইমস্ট্যাম্পগুলিকেও সামঞ্জস্য করতে বাড়ছিল! এসএসএমএস ডিস্ক ব্যবহারের রিপোর্টটি বৃদ্ধির ইভেন্টগুলি দেখায় - এখানে উদাহরণস্বরূপ শীর্ষস্থানীয়:

বৃদ্ধি ইভেন্ট

(এমন একটি ডেমো পছন্দ করতে হবে যেখানে মুছে ফেলা ডেটাবেসগুলি বাড়ায়) নোট করুন যে ক্লাস্টারড ইনডেক্সে কম সারি রয়েছে, তবে এর আকার ইতিমধ্যে প্রায় 1.5GB বেড়েছে। AcceptedAnswerId এ অবিচ্ছিন্ন সূচকগুলি নাটকীয়ভাবে বৃদ্ধি পেয়েছে - এগুলি একটি স্বল্প মূল্যতে সূচক যা বেশিরভাগ নਾਲ, সুতরাং তাদের সূচকের আকারগুলি প্রায় দ্বিগুণ হয়ে গেছে!

মুছে ফেলার সময় sp_BlitzIndex

এটি প্রমাণ করার জন্য আমাকে মুছে ফেলার জন্য অপেক্ষা করতে হবে না, তাই আমি ডেমোটি সেখানে থামিয়ে দেব। পয়েন্ট হ'ল: আপনি যখন কোনও টেবিলটিতে বড় মুছে ফেলেন যা আরসিএসআই, এসআই, বা এজি সক্ষম করার আগে কার্যকর করা হয়েছিল, তখন সূচকগুলি (ক্লাস্টার সহ) প্রকৃতপক্ষে সংস্করণ স্টোর টাইমস্ট্যাম্প সংযোজন করতে বাড়তে পারে।


3
এই ব্যাখ্যা। দেখা যাচ্ছে যে আরও কিছু পরিস্থিতি রয়েছে যা 14 সংস্করণ বাইট মিস করতে পারে। আমার পরীক্ষায় এটি মনে হয় যে কোনও সূচি অফলাইনে পুনর্নির্মাণ সংস্করণ বাইটগুলি ছাড়াই সারিগুলি পুনর্নির্মাণ করবে।
মাইকেল জে স্বার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.