পৃষ্ঠা গণনা <1000 সহ সূচীগুলি কেন পুনর্নির্মাণ করবেন না?


17

আমি সূচি রক্ষণাবেক্ষণের জন্য ওলা হ্যালেনগ্রেনস স্ক্রিপ্ট ব্যবহার করি। আমি এটি করার আগে, নিম্নলিখিত সূত্রগুলি সর্বাধিক খণ্ডিত হয় তা দেখার জন্য আমি নিম্নলিখিত কোয়েরিটি ব্যবহার করেছি:

SELECT dbschemas.[name] as 'Schema',
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
ORDER BY indexstats.avg_fragmentation_in_percent desc

আমার ক্ষেত্রে, গড় সূচক 15 সূচকের জন্য 70% এর বেশি এবং 28 এর জন্য 30% এর বেশি ছিল সূচকের ।

সুতরাং, আমি ওলা হ্যালেনগ্রেনের সমাধান ব্যবহার করে প্রতিটি সূচি পুনর্নির্মাণ করি। আমি আবার যখন ক্যোয়ারী চালালাম, তখন এটি ফলাফল ছিল:

ওভার ফ্র্যাগমেন্টেশন 70% জন্য 12 ইনডেক্স, ওভার 30% জন্য 15 ইনডেক্স।

আমি বুঝতে পেরেছিলাম, কারণটি ছিল page_count, যা প্রতিটি সূচকের জন্য 1000 এর চেয়ে কম ছিল যা এখনও খুব খণ্ডিত ছিল। উদাহরণস্বরূপ, page_count 967 এর সাথে সূচকগুলির একটিতে 98,98% ভাগের ভাগ রয়েছে ! আমার কাছে, এটি সূচকটি পুনর্নির্মাণের জন্য উপযুক্ত বলে মনে হচ্ছে! আমি করেছি, এবং তার পরে, খণ্ডটি 0% ছিল । এছাড়াও, page_count132 এর একটি সূচক 95% থেকে 0% এ চলেছে

সুতরাং, আমার প্রশ্ন হল, সেই সূচকগুলি পুনর্নির্মাণ না করার কী কারণ থাকতে পারে? একটি কারণ হতে পারে যে পুনর্নির্মাণে সময় এবং সংস্থান ব্যয় হয়, তবে সূচীগুলি ছোট হওয়ায় এটির তুলনামূলকভাবে কয়েকটি সংস্থান ব্যয় হয় না এবং যাইহোক এটি পুনর্নির্মাণ করা এখনও বেন্ফেশিয়াল হবে?

এই সাইটে একাধিক সম্পর্কিত প্রশ্ন রয়েছে তবে তারা সকলেই এই প্রশ্নের উত্তর দেয় যে একটি সূচক কেন ডিফ্র্যাগমেন্ট করবে না, বা সূচকগুলি যদি ছোট হয় তবে আপনি সেগুলি ডিফল্ট করেন না, তবে এখানে বিবৃতিটি খণ্ডনকে হ্রাস করে, প্রশ্ন হচ্ছে, যাইহোক এটি কেন করবেন না?


ছোট সূচকগুলি মেমরিতে ক্যাশে হওয়ার সম্ভাবনা রয়েছে। যে সূচকগুলি যাইহোক আইও-র ব্যয় করে না তারা মানহানি থেকে উপকৃত হয় না। এই 1000 পৃষ্ঠার গণনা বিধিটি হিউরিস্টিক।
usr ডিরেক্টরির

উত্তর:


20

ন্যূনতম পৃষ্ঠাগুলির সংখ্যা সম্পর্কে গাইডেন্স কিছুটা স্বেচ্ছাসেবী । বিভাজন হ্রাস করার সবচেয়ে বড় সুবিধা হ'ল:

  1. এটি এর জন্য পঠন-এগিয়ে পারফরম্যান্সকে উন্নত করতে পারে বৃহত্তর পরিসরের স্ক্যানগুলির ; এবং
  2. এটি পৃষ্ঠ ঘনত্ব উন্নত করতে পারে (প্রতি পৃষ্ঠার সারি সংখ্যা)

সংজ্ঞা অনুসারে এই দুটি কারণই ছোট সূচকের জন্য কম গুরুত্বপূর্ণ।

ছোট সূচকগুলি পুনর্নির্মাণের পাল্টা যুক্তিটি মূলত:

"কেন বিরক্ত করবেন? চিন্তা করার মতো আরও গুরুত্বপূর্ণ জিনিস আপনার কাছে নেই?"।

এটি বলেছিল, পুনর্নির্মাণ / পুনর্গঠন বিনামূল্যে নয়। কিছু ক্ষেত্রে অতিরিক্ত প্রচেষ্টা এবং লগ জেনারেশন এড়িয়ে চলা মূল্যবান হতে পারে (উদাহরণস্বরূপ, ল্যান যদি কোনও WAN জুড়ে কোনও সম্ভাব্য কারণের জন্য - মিররিং, প্রাপ্যতা গ্রুপ, প্রতিলিপি ...) সরবরাহ করা হয়) এছাড়াও, (বা এমনকি কিছু ক্ষেত্রে, আপনি) অনলাইনে পুনর্নির্মাণ না করা পর্যন্ত, পুনর্নির্মাণটি লকিংয়ের মাধ্যমে অন্যান্য সমবর্তী প্রক্রিয়াগুলিকে প্রভাবিত করতে পারে। অবশেষে, ছোট সূচকের জন্য, পুনর্নির্মাণ এমনকি মিক্সড এক্সটেন্টস থেকে বরাদ্দের কারণে বিচ্ছিন্নতাও হ্রাস করতে পারে না (যদি না আপনি ট্রেস পতাকা 1111 সক্ষম করে চালাচ্ছেন )।

আপনি যদি এখনও এই ছোট সূচকগুলি পুনর্নির্মাণে আরও সুখী বোধ করেন এবং এর পরিণতিগুলি মনে করেন না, তবে সমস্ত উপায়ে @PageCountLevelওলার পদ্ধতিতে প্যারামিটারটির মান পরিবর্তন করুন ।

দেখুন ইনডেক্স ফ্র্যাগমেন্টেশন উপর পল Randal এর উপস্থাপনার পাস টিভি রেকর্ডিং সব বিস্তারিত জানার জন্য।

আপনি এসএমএল সার্ভারে সূচী টুকরো টুকরো কেন গুরুত্বপূর্ণ তা সম্পর্কে ব্রেন্ট ওজার আলাপ দেখতে দেখতে পছন্দ করতে পারেন

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