"DbccFilesCompact" স্থিতিটি কেন "স্থগিত"?


11

আমি একটি 600 জি ডেটা ফাইলে SHRINK ফাইল চালাচ্ছি।

বর্তমানে, স্থিতিটি "স্থগিত" হিসাবে রিপোর্ট করা হয়েছে এবং কমান্ডের sys.dm_exec_requests.percent_completeজন্য DbccFilesCompactরিপোর্ট করা হয়েছে যে এটি চলছে (তবে খুব ধীরে ধীরে)

কেন এটি স্থগিত করা হচ্ছে এবং কীভাবে এটি মসৃণভাবে চালানো যায় তা পরীক্ষা করার কোনও উপায় আছে?


এফওয়াইআই - স্থিতি পরীক্ষার জন্য এসকিউএল ক্যোয়ারী

select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id)
       , R.cpu_time, R.total_elapsed_time, R.percent_complete
from   sys.dm_exec_requests R
       cross apply sys.dm_exec_sql_text(R.sql_handle) T
order by Command

উত্তর:


10

না, আপনি কেন এটি ধীরে ধীরে চলছে তা পরীক্ষা করতে পারবেন না তবে আমি আপনাকে কিছু ইঙ্গিত দিতে পারি:

1) এসকিউএল 2005-এ, ননক্র্লাস্টারড ইনডেক্সগুলির পরিচালনা স্টোরেজ ইঞ্জিন (আমার দল) থেকে কোয়েরি প্রসেসরে পরিণত হয়েছে। এর অনেকগুলি পার্শ্ব-প্রতিক্রিয়া রয়েছে যার মধ্যে একটি হ'ল গতি যার সাহায্যে হিপ ডেটা পৃষ্ঠাগুলি সঙ্কুচিত করে সরানো যায়। সমস্ত অবিচ্ছিন্ন সূচক রেকর্ডগুলিতে তারা যে ইনডেক্সের তথ্য রেকর্ডে ব্যাকলিঙ্ক ধারণ করে - একটি গাদা ক্ষেত্রে, এটি কোনও নির্দিষ্ট ডেটা পৃষ্ঠায় রেকর্ড সংখ্যার একটি দৈহিক লিঙ্ক। যখন একটি হিপ ডেটা পৃষ্ঠা সঙ্কুচিত করে সরানো হয়, সেই পৃষ্ঠাটিতে রেকর্ডগুলিতে ব্যাকলিংক থাকা সমস্ত অবিবাহিত সূচি রেকর্ডকে অবশ্যই পৃষ্ঠার নতুন অবস্থানের সাথে আপডেট করতে হবে। 2000 সালে এটি স্টোরেজ ইঞ্জিন নিজেই খুব দক্ষতার সাথে সম্পন্ন করেছিল। ২০০৫ এর পরে, অবিচ্ছিন্ন সূচক রেকর্ড আপডেট করতে কোয়েরি প্রসেসর কল করে এটি করা আবশ্যক। এটি কখনও কখনও 2000 এর চেয়ে 100 গুণ বেশি ধীর হয়।

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

৩) ডাটাবেস ব্যবহার করে অন্য একটি প্রক্রিয়া থাকতে পারে যা লকগুলির জন্য পৃষ্ঠাগুলি ঘুরিয়ে দেওয়ার জন্য অপেক্ষা করাকে সঙ্কুচিত করে দিতে পারে is

৪) আপনার কাছে স্ন্যাপশট বিচ্ছিন্নতা সক্ষম থাকতে পারে এবং পুরানো সংস্করণগুলির প্রয়োজনীয় লেনদেনগুলি শেষ না হওয়া পর্যন্ত সংস্করণ স্টোর লিঙ্কগুলির সাথে পৃষ্ঠাগুলি সঙ্কুচিত করতে পারে না।

5) আপনার আই / ও সাবসিস্টেমটি আন্ডার পাওয়ার হতে পারে। নিম্ন একক অঙ্কের চেয়ে বেশি ডিস্কের সারির দৈর্ঘ্যের অর্থ হ'ল বাটনেলেকের আপনার I / O সাবসিস্টেম।

এই যে কোনও বা সমস্তগুলি সঙ্কুচিত হওয়ার ধীর সময়টিতে অবদান রাখতে পারে।

সাধারণত যদিও, আপনি সঙ্কুচিত চালাতে চান না। বিশদগুলির জন্য এই ব্লগ পোস্টটি দেখুন: আপনার ডেটা ফাইলগুলি সঙ্কুচিত করা উচিত নয় কেন

আশাকরি এটা সাহায্য করবে!


1
@ পল র‌্যান্ডাল: আপনার মন্তব্য এবং আমি সংক্ষেপে কেন সঙ্কুচিত হওয়া প্রয়োজন না হলে চালানো উচিত না তার প্রশংসা করি। আমি প্রস্তাবটি চেষ্টা করব (ফাইলগুলিকে বিভিন্ন ফাইলগোষ্ঠে স্থানান্তরিত করব) এবং এটি কীভাবে সক্রিয় হয় তা দেখুন।
নাচ

8

শতকরা কতটা সম্পন্ন হয়েছে তা পরীক্ষা করতে আপনি এই স্ক্রিপ্টটি চালাতে পারেন!

SELECT 
    percent_complete, 
    start_time, 
    status, 
    command, 
    estimated_completion_time, 
    cpu_time, 
    total_elapsed_time
    --,*
FROM 
    sys.dm_exec_requests
WHERE
    command = 'DbccFilesCompact'

2

আমি এসকিউএল সার্ভার ২০০৮ এসপি 1-তে একটি ডাটাবেস সঙ্কুচিত করছি এবং আমি সঙ্কুচিত কমান্ডের অগ্রগতি বলতে পারার একটি উপায় হল sp_lock স্পিড চালানো এবং বেশিরভাগ অংশের জন্য আমি দেখতে পাচ্ছি যে এটি ফাইল 1 এ একটি লক রাখে তারপর এটি সম্পন্ন করার পরে এটি একটি স্থান রাখে ফাইল আইডি 2 এ লক করুন, এবং এভাবে এবং এইভাবে আমি বলতে পারি এটি কখন শেষ ফাইল আইডিতে কাজ করছে এবং এটি আমার ইঙ্গিত যা প্রায় সম্পূর্ণ।

ধন্যবাদ,

অ্যালেক্স আগুইলার


আপনার ডিবি কত বড়?
জন জাব্রোস্কি

0

আমি কী সমস্যা ছিল তা আবিষ্কার করেছি (আমার ক্ষেত্রে) এবং আমি যে সমাধানটি ব্যবহার করেছি তা এখানে প্রস্তাব করি।

আমার কাছে ডেটাবেস ব্যবহার করার কিছুই ছিল না, এবং মাস্টারটি আমার সেশনে ডিফল্ট ডাটাবেস ছিল, আমি SP_Wo2 ব্যবহার করে যাচাই করেছি। তারপরে আমি ডাটাবেসে ডান ক্লিক করেছি, "কার্যগুলি" নির্বাচন করুন এবং তারপরে "সঙ্কুচিত করুন" এবং "ঠিক আছে" ডায়ালগটিতে। Sp_Wo2 দিয়ে আবার চেক করার পরে, স্থিতিটি বেশ কয়েক মিনিটের দ্বারা "স্থগিত" হয়ে যায় এবং তার পরে অব্যাহত বেকাউস "" কোনও এক্সক্লুসিভ লক পাওয়া যায় না "। নিজেকে অনুমান করুন, তবে আমি নিশ্চিত যে ডায়ালগটিই এটির কারণ।

সুতরাং আমি ব্যবহার করে কমান্ড লাইন দিয়ে যাওয়ার সিদ্ধান্ত নিয়েছি:

ডিবিসিসি শ্রিনকদাটাবেস (মাইডাটাবেস)

(জাদুকরী সর্বত্র নথিভুক্ত করা হয়), তারপরে সঙ্কোচনটি কয়েক সেকেন্ড সময় নিয়েছিল।


1
DBCC SHRINKDATABASEএড়ানো উচিত কারণ এটি ডাটাবেসের জন্য সমস্ত ফাইল সঙ্কুচিত করবে - যে কোনও ডেটা ফাইল এবং কোনও লগ ফাইল।
জ্যাক ফারা’র

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