কীভাবে এসকিউএল স্টেটমেন্টগুলি খুঁজে পাবে যার ফলে টেম্পডিবির বৃদ্ধি ঘটে?


26

সার্ভারের টেমপ্লেডবি (এসকিউএল সার্ভার ২০০৮) প্রতি মাসে কয়েকগুণ 500 গিগাবাইটে বেড়ে যায়। কোন এসকিউএল বিবৃতি এই সমস্যা সৃষ্টি করেছে তা খুঁজে পাওয়া সম্ভব? সমস্যাটি সাধারণত create table #temp...; insert into #temp...বা select ... into #temp...জটিল জটিলতায় যোগদানের কারণে হয় না ।

প্রাথমিক আকার tempdb ফাইল কিছু স্বয়ংক্রিয়ভাবে অনেক বড় মান প্রত্যেক সময় সেট করা হয়। কীভাবে এটি প্রতিরোধ করবেন?

কিছু সময় ক্যাশেড প্ল্যানগুলি ফাইলগুলির আকার পরিবর্তন / সঙ্কুচিত করা রোধ করে। কোনটি টেম্পডিবির সন্ধান করবে?


1
দুঃখিত, এটি প্রায় 2 টা এবং আমি এই প্রশ্নের সম্পূর্ণ উত্তর দিতে গ্যাসের বাইরে আছি, তবে আপনি অন্যান্য উত্তরগুলির জন্য অপেক্ষা করার সময় এই URL গুলি কার্যকর হতে পারে - mssqltips.com/sqlservertip/1432/… এবং google.com/search?q= যা + প্রশ্নগুলি + + টেম্পিডবি ব্যবহার করছে
অ্যারন বার্ট্র্যান্ড

উত্তর:


27

টেম্পডিবির ব্যবহার ট্র্যাক করতে আপনি তিনটি ডিএমভি ব্যবহার করতে পারেন:

প্রথম দুটি আপনাকে ক্যোয়ারী এবং সেশন পর্যায়ে বরাদ্দগুলি ট্র্যাক করার অনুমতি দেবে। তৃতীয় সংস্করণ স্টোর, ব্যবহারকারী এবং অভ্যন্তরীণ বস্তুগুলিতে বরাদ্দগুলি ট্র্যাক করে।

নিম্নলিখিত উদাহরণের ক্যোয়ারী আপনাকে প্রতি সেশনে বরাদ্দ দেবে:

SELECT
  sys.dm_exec_sessions.session_id AS [SESSION ID]
  ,DB_NAME(database_id) AS [DATABASE Name]
  ,HOST_NAME AS [System Name]
  ,program_name AS [Program Name]
  ,login_name AS [USER Name]
  ,status
  ,cpu_time AS [CPU TIME (in milisec)]
  ,total_scheduled_time AS [Total Scheduled TIME (in milisec)]
  ,total_elapsed_time AS    [Elapsed TIME (in milisec)]
  ,(memory_usage * 8)      AS [Memory USAGE (in KB)]
  ,(user_objects_alloc_page_count * 8) AS [SPACE Allocated FOR USER Objects (in KB)]
  ,(user_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR USER Objects (in KB)]
  ,(internal_objects_alloc_page_count * 8) AS [SPACE Allocated FOR Internal Objects (in KB)]
  ,(internal_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR Internal Objects (in KB)]
  ,CASE is_user_process
             WHEN 1      THEN 'user session'
             WHEN 0      THEN 'system session'
  END         AS [SESSION Type], row_count AS [ROW COUNT]
FROM 
  sys.dm_db_session_space_usage
INNER join
  sys.dm_exec_sessions
ON  sys.dm_db_session_space_usage.session_id = sys.dm_exec_sessions.session_id

আপনি যদি সময়ের সাথে সাথে ট্র্যাক ব্যবহার করতে চান তবে কেন্দ্র লিটল দ্বারা প্রদর্শিত হিসাবে, sp_Woisactive এর সাথে ডেটা সংগ্রহ করার বিষয়টি বিবেচনা করুন ।


3
ধন্যবাদ। সেশনের পার্থক্য [SPACE Allocated FOR USER Objects (in KB)]এবং [SPACE Deallocated FOR USER Objects (in KB)]আসল স্থানটি কি?
u23432534

4

সমস্যার বিভিন্ন উত্স থাকতে পারে:

  • সারণী ভেরিয়েবল বা অস্থায়ী সারণী ব্যবহার
  • এসকিএল সার্ভারটি টেম্পিডবিতে ওয়ার্কটবল হিসাবে মধ্যবর্তী ফলাফল তৈরি করে - সাধারণত বাছাইয়ের উদ্দেশ্যে (সাধারণত অনুপস্থিত সূচক / পুরানো পরিসংখ্যানের লক্ষণ)
  • এসকিউএল সার্ভার টেবিলের মূল্যবান ফাংশনের ফলাফলের প্রাক-মূল্যায়ন করার সিদ্ধান্ত নিয়েছে এবং এই ক্ষেত্রে এটি ডেটা টেম্পডিবায় সংরক্ষণ করে
  • বিকল্পের সাথে সূচীগুলি পুনরায় তৈরি করা SORT_IN_TEMPDB = ON
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.