কেন সঞ্চিত প্রক্রিয়া শেষে একটি টেম্প টেবিল কেটে ফেলা হয় যা এটি দ্রুত ফ্রি টেম্পডিবি স্থান দ্রুত তৈরি করে?


12

এসকিউএল সার্ভার স্টোরেজ পদ্ধতিগুলির মধ্যে তৈরি টেম্প টেবিলগুলিকে ক্যাশে করে এবং প্রক্রিয়াটি শেষ হয়ে যায় এবং পরবর্তীকালে সম্পাদিত হয় তখন কেবল তাদের নামকরণ করে। টেম্পডিবি স্পেস প্রকাশিত হলে আমার প্রশ্নের সাথে সম্পর্কিত with আমি পড়েছি যে প্রক্রিয়া শেষে টেবিলটি কেটে ফেলা হয়েছে । আমি মন্তব্যগুলিতে পড়েছি যে এটি প্রতি সেশনের ভিত্তিতে পরিচালনা করা হয় এবং এমএসডিএন-তে পরিষ্কার করা জবাব দেওয়া দরকার কিনা তা সম্পর্কে একটি প্রশ্ন দেখেছি । তবে যদি এটি একই অধিবেশন দ্বারা দু'বার সম্পাদিত না হয়?

আমি আরও শুনেছি যে এখানে একটি পটভূমি আবর্জনা সংগ্রহের প্রক্রিয়া রয়েছে যা টেবিলের সুযোগের বাইরে চলে যাওয়ার পরে সেই জায়গাটি মুক্ত করে।

সঞ্চিত প্রক্রিয়া শেষে একটি টেম্প টেবিল কেটে ফেলা যা এটি তৈরি করে বলে মনে হয় যে টেবিলটি টেম্পডবিতে ব্যবহৃত স্থানটি তাত্পর্যপূর্ণ প্রত্যাশা সত্ত্বেও কোনও ট্র্যাঙ্কেট বিবৃতি ব্যবহার না করা হলে ডেটা দ্রুত প্রকাশের কারণ হতে পারে। কেন?

এই জাতীয় কাণ্ড বিবৃতি ব্যবহার বা ব্যবহার না করে সম্পর্কিত পারফরম্যান্সের প্রভাবগুলি কী হবে? SNAPSHOT বিচ্ছিন্নতা ব্যবহার করার সময়, tempdb প্রায়শই চাপযুক্ত হয় এবং আমি মনে করি যে যত তাড়াতাড়ি সম্ভব একটি বৃহত টেম্প টেবিল থেকে টেম্পডবিতে ব্যবহৃত স্থান ছেড়ে দেওয়া টেম্পডিবির অপ্রয়োজনীয় বৃদ্ধি রোধ করবে। এই সম্ভাব্য স্থান সঞ্চয় কর্মক্ষমতা ব্যয় করতে হবে?

সমস্যাটি পুনরুত্পাদন করার জন্য এখানে কিছু কোড রয়েছে (বেশিরভাগ @Gameiswar থেকে, কিছু পরিবর্তন সহ):

SET NOCOUNT ON;
GO
ALTER PROC usp_test
AS
BEGIN
    IF object_id('tempdb..#temp') IS NOT NULL
        DROP TABLE #temp

    SELECT *
    INTO #temp
    FROM [dbo].[Event_28] -- This is a table with 15313 rows, using 35648 KB according to sp_spaceused

    --SELECT SUM(user_object_reserved_page_count) AS [user object pages used]
    --  ,(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
    --  ,getdate() AS BeforeTruncate
    --FROM tempdb.sys.dm_db_file_space_usage;
 --   TRUNCATE TABLE #temp
    --SELECT SUM(user_object_reserved_page_count) AS [user object pages used]
    --  ,(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
    --  ,getdate() AS AfterTruncate
    --FROM tempdb.sys.dm_db_file_space_usage;

END
GO

SELECT SUM(user_object_reserved_page_count) AS [user object pages used]
    ,(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
    ,getdate() AS 'before'
FROM tempdb.sys.dm_db_file_space_usage;

EXEC usp_test
GO

SELECT SUM(user_object_reserved_page_count) AS [user object pages used]
    ,(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
    ,getdate() AS 'final'
FROM tempdb.sys.dm_db_file_space_usage;
GO 40

মন্তব্য করা রেখাগুলি কিছু রানের জন্য মন্তব্য করা ছেড়ে গেছে এবং অন্যদের জন্য অ-মন্তব্য করেছে। যখন মন্তব্যটি করা হয়েছিল, প্রক্রিয়াটি কার্যকর হওয়ার আগে ফলাফলের সাথে ক্যোয়ারির TRUNCATEফলাফলগুলি tempdb.sys.dm_db_file_space_usage(4472 আরও পৃষ্ঠাগুলি এবং 34.9375 এমবি বড়) মেলে তার আগে ২.২৫ থেকে ৪.৫ সেকেন্ড সময় লেগেছিল । লাইনগুলি (সহ TRUNCATE) অ-মন্তব্য করা হয়েছে, এটি কেবলমাত্র 0.11 - 0.9 সেকেন্ড সময় নিয়েছিল। এই পরীক্ষাগুলির সময় উত্স সারণীতে কিছুটা ছোট ডেটা বৃদ্ধি সহ একটি লাইভ সিস্টেম থেকে এই ফলাফলগুলি আসে।

কোড সহ নমুনা আউটপুট মন্তব্য করেছে (প্রথম থেকে শেষ "চূড়ান্ত" এন্ট্রি থেকে 2.69 সেকেন্ড):

user object pages used user object space in MB                 before
---------------------- --------------------------------------- -----------------------
1536                   12.000000                               2017-10-04 21:03:42.197

Beginning execution loop
user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:42.423

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:42.533

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:42.643

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:42.883

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:42.990

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:43.100

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:43.450

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:43.650

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:43.767

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:43.993

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.103

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.213

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.437

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.553

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.663

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:44.887

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6000                   46.875000                               2017-10-04 21:03:45.003

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
1536                   12.000000                               2017-10-04 21:03:45.113

কোডটির সাথে নমুনা ফলাফল অ-মন্তব্য করেছে (প্রথম থেকে শেষ "চূড়ান্ত" এন্ট্রি থেকে 0.11 সেকেন্ড):

user object pages used user object space in MB                 before
---------------------- --------------------------------------- -----------------------
1536                   12.000000                               2017-10-04 21:07:39.807

user object pages used user object space in MB                 BeforeTruncate
---------------------- --------------------------------------- -----------------------
6016                   47.000000                               2017-10-04 21:07:39.923

user object pages used user object space in MB                 AfterTruncate
---------------------- --------------------------------------- -----------------------
6016                   47.000000                               2017-10-04 21:07:39.923

Beginning execution loop
user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
6016                   47.000000                               2017-10-04 21:07:40.160

user object pages used user object space in MB                 final
---------------------- --------------------------------------- -----------------------
1536                   12.000000                               2017-10-04 21:07:40.270

উত্তর:


12

সঞ্চিত প্রক্রিয়া শেষে একটি টেম্প টেবিল কেটে ফেলা যা এটি তৈরি করে বলে মনে হয় যে টেবিলটি টেম্পডবিতে ব্যবহৃত স্থানটি তাত্পর্যপূর্ণ প্রত্যাশা সত্ত্বেও কোনও ট্র্যাঙ্কেট বিবৃতি ব্যবহার না করা হলে ডেটা দ্রুত প্রকাশের কারণ হতে পারে। কেন?

যদি অস্থায়ী টেবিলটি যথেষ্ট পরিমাণে বড় হয় ( 128 টিরও বেশি এক্সটেন্টস ), তবে দৈহিক পৃষ্ঠা অবলম্বন স্থগিত হয় এবং একটি ব্যাকগ্রাউন্ড সিস্টেম টাস্ক দ্বারা সম্পাদিত হয়। স্পষ্টত TRUNCATE TABLEব্যবহৃত হয় বা না হয় এটি সত্য ।

পার্থক্যটি হ'ল একটি ক্ষুদ্র বাস্তবায়ন বিশদ। অস্থায়ী টেবিল পরিষ্কারের দ্বারা তৈরি (অন্যথায় অভিন্ন) মুলতুবি ড্রপ টাস্কের চেয়ে কম সংক্ষিপ্ত টাইমারTRUNCATE TABLE সহ একটি টাস্ক তৈরি করার ক্ষেত্রে একটি স্পষ্ট ঘটে :

স্ট্যাক কল করুন কারণ লোকেরা তাদের পছন্দ করে

এটি দুর্ঘটনাক্রমে বা ডিজাইনের হোক না কেন কারও অনুমান। এটি অবশ্যই যে কোনও সময় পরিবর্তিত হতে পারে, যেহেতু বিশদের এই স্তরেরটি সমর্থিত পণ্য পৃষ্ঠের অঞ্চল ছাড়িয়ে যায়।

যদি আপনি বিশ্বব্যাপী একটি (বেশিরভাগ) অনিবন্ধিত ট্রেস পতাকা সহ স্থগিত ড্রপ অক্ষম করে থাকেন:

DBCC TRACEON (671, -1);

... ডিলোকেশনগুলি উভয় ক্ষেত্রে একযোগে করা হয় এবং আপনি সময় নির্ধারণের ক্ষেত্রে কোনও পার্থক্য দেখতে পাবেন না।

এই জাতীয় কাণ্ড বিবৃতি ব্যবহার বা ব্যবহার না করে সম্পর্কিত পারফরম্যান্সের প্রভাবগুলি কী হবে? SNAPSHOT বিচ্ছিন্নতা ব্যবহার করার সময়, tempdb প্রায়শই চাপযুক্ত হয় এবং আমি মনে করি যে যত তাড়াতাড়ি সম্ভব একটি বৃহত টেম্প টেবিল থেকে টেম্পডবিতে ব্যবহৃত স্থান ছেড়ে দেওয়া টেম্পডিবির অপ্রয়োজনীয় বৃদ্ধি রোধ করবে। এই সম্ভাব্য স্থান সঞ্চয় কর্মক্ষমতা ব্যয় করতে হবে?

আমি গুরুতরভাবে সন্দেহ করি যে এটি যে কোনও উপায়েই অনেক পার্থক্য আনতে পারে। যদি টেম্পিডবিটি আপনার কাজের চাপের শীর্ষগুলি যথাযথভাবে মাপানো হয় তবে এক বা দ্বিতীয় বা তিন পরে মুলতুবি ড্রপ আসে কিনা তা বিবেচনা করা উচিত। একই কাজ সম্পন্ন হয়; এটি সময়ের সাথে সামান্য পার্থক্য।

অন্যদিকে: TRUNCATE TABLEআপনার সঞ্চিত প্রক্রিয়া শেষে যদি আপনি অস্থায়ী টেবিলগুলিতে ব্যবহার করতে আরও স্বাচ্ছন্দ্য বোধ করেন তবে এটির সাথে যান। এটি করার ক্ষেত্রে আমি কোনও বিশেষ দিকনির্দেশ সম্পর্কে সচেতন নই।

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