আমি যখন একটি পরিবর্তিত সূচক পুনর্গঠন / পুনর্নির্মাণ জমা দিই তখন কীভাবে অগ্রগতি / স্থিতি পরীক্ষা করতে পারি?
আমি যখন একটি পরিবর্তিত সূচক পুনর্গঠন / পুনর্নির্মাণ জমা দিই তখন কীভাবে অগ্রগতি / স্থিতি পরীক্ষা করতে পারি?
উত্তর:
আপনার পুনর্নির্মাণ করতে কত সময় লাগবে তা বলা সত্যিই কঠিন, কারণ এসকিউএল নিজেই আগে থেকেই জানে না এবং আপনি একটি অনুমান দিতে পারবেন না।
আপনার সূচকটি পুনর্নির্মাণের কত দিন ধরে চলেছে তা দেখার জন্য এবং এসকিউএলটির সত্যই কোনও অনুমান নেই তা যাচাই করতে আপনি নীচের ক্যোয়ারীটি dm_exec_requests dmv ব্যবহার করতে পারেন:
SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle)))
FROM sys.dm_exec_requests r WHERE command IN ('Alter Index')
তবে এটি যখন প্রয়োজন সময় মতো সত্যিকারের অনুমানের দিকে আসে তখন আপনি স্কেলমুনকি থেকে এই দুর্দান্ত ব্লগ পোস্টটি পড়তে পারেন , যা "..এটি নির্ভর করে" বলে সংক্ষিপ্তসার করে:
এবং যেহেতু আমরা সবাই একই হার্ডওয়্যারে নেই, একই সফটওয়্যার ব্যবহার করে, বা একই ডেটা খুঁজছি, এর উত্তরটি হ'ল ... এটি নির্ভর করে
হতাশাজনক, তবে সত্য, দুঃখের সাথে।
আমি এই ব্লগ পোস্টটিকে ম্যাজিক স্ক্রিপ্টের সাহায্যে সন্ধান করতে পেরেছি যা অভিযোগ করেছে যে এটি কাজটি করে, যাচাই করতে পারে না কারণ এটি যে এসকিউএল সার্ভার ২০১৪-এর জন্য কাজ করছে বলে মনে হচ্ছে না, ভাগ করা লকের জন্য কোয়েরি ব্লক অপেক্ষা করছে। যদিও কেউ এটি দরকারী হিসাবে খুঁজে পাবে তাই আমি এটি এখানে রেখে দেব।
;WITH cte AS
(
SELECT
object_id,
index_id,
partition_number,
rows,
ROW_NUMBER() OVER(PARTITION BY object_id, index_id, partition_number ORDER BY partition_id) as rn
FROM sys.partitions
)
SELECT
object_name(cur.object_id) as TableName,
cur.index_id,
cur.partition_number,
PrecentDone =
CASE
WHEN pre.rows = 0 THEN 0
ELSE
((cur.rows * 100.0) / pre.rows)
END,
pre.rows - cur.rows as MissingRows
FROM cte as cur
INNER JOIN cte as pre on (cur.object_id = pre.object_id) AND (cur.index_id = pre.index_id) AND (cur.partition_number = pre.partition_number) AND (cur.rn = pre.rn +1)
ORDER BY 4
আমি উত্তরের উপরে গ্রহণযোগ্য উত্তরটি পেয়েছি তবে একটি গুরুত্বপূর্ণ বিষয় অনুপস্থিত: কমান্ডের স্থিতি (যেমন কমান্ডটি অবরুদ্ধ করা হয়েছে)
এই সাধারণ নির্বাচন স্থিতি সামনের এবং কেন্দ্র দেখায়:
SELECT percent_complete, *
FROM sys.dm_exec_requests
WHERE session_id = <session id of alter index>