কীভাবে RESOURCE_SEMAPHORE এবং RESOURCE_SEMAPHORE_QUERY_COMPILE অপেক্ষার প্রকারগুলি সমাধান করবেন


13

আমরা নিম্নোক্ত কনফিগারেশন সহ সার্ভারে হোস্ট করা ডাটাবেস, আকার 300 গিগাবাইটের মধ্যে একটি থেকে ধীরে ধীরে চলমান এসকিএল সার্ভার কোয়েরিগুলি হিট / ডেটিং আনার মূল কারণগুলি সনাক্ত করার চেষ্টা করছি:

উইন্ডোজ সার্ভার 2003 আর 2, এসপি 2, এন্টারপ্রাইজ সংস্করণ, 16 জিবি র‌্যাম, 12 সিপিইউ'র 32 বিট

এসকিউএল সার্ভার 2005, এসপি 4, এন্টারপ্রাইজ সংস্করণ, 32 বিট।

আমরা ইতিমধ্যে 64৪ বিটের আপগ্রেড সম্পর্কে ব্যবসায়কে অবহিত করেছি যা এক মাস সময় নিতে পারে।

তবে বর্তমান সমস্যার জন্য আমরা যদি মেমরির চাপটি সমাধান করতে পারি বা অবশেষে র‌্যাম বাড়ানোর সিদ্ধান্তে পৌঁছাতে পারি তবে ডেটা সংগ্রহ করার চেষ্টা করছি।

অ্যাকশন সম্পন্ন: পুনরায় ইনডেক্সিং এবং আপডেটের পরিসংখ্যানগুলি এই ডিবির জন্য উপযুক্ত।

নীচে দেখানো হয়েছে, আমরা গত 5 দিন ধরে সমুদ্রতীর ওয়েটটাইপটি লক্ষ্য করছি, বোঝার সময় চলমান:

waittype

নীচের প্রশ্নের পরে কিছু তথ্য: বাফারের আকার = 137272

SELECT SUM(virtual_memory_committed_kb)
FROM sys.dm_os_memory_clerks
WHERE type='MEMORYCLERK_SQLBUFFERPOOL'

এবং semaphore মেমরি = 644024 নীচে কোয়েরি প্রতি

 SELECT SUM(total_memory_kb)
FROM sys.dm_exec_query_resource_semaphores

নীচে থেকে আরও কিছু তথ্য সংগ্রহ করা হয়েছে dm_exec_query_resource_semaphoresএবং sys.dm_exec_query_memory_grantsডিএমভি'র

dmvserror

সুতরাং উপরের তথ্য সংগ্রহ করা হয়েছে এবং প্রতি এসপি_ব্লিটজ ডেটা রিসোর্স সেমফোরে সমস্যা বলে মনে হচ্ছে।

16 গিগাবাইট র‌্যাম উপলভ্য, রিসোর্স সেমফোড় আইডির জন্য মেমরিটি 'টার্গেট_মেমরি_কেবি' নির্ধারিত কি খুব কম?

দ্রষ্টব্য * প্রতি বিশ্লেষণে 8 ঘন্টা চালানো 'টার্গেট_মেমরি_ কেবি' সর্বদা 1 জিবি এর নীচে থাকে, 16 গিগাবাইট উপলব্ধ?

এখানে কী সমস্যা হতে পারে এবং কীভাবে সমাধান করবেন, দয়া করে পরামর্শ দিন

ধন্যবাদ


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে । আরও অফ-বিষয়ের মন্তব্যগুলি কেবল মুছে ফেলা হবে।
পল হোয়াইট 9

উত্তর:


25

ওহ, মঙ্গল, আমার এখানে কিছু খারাপ খবর আছে।

একটি 32-বিট ওএসে, এসকিউএল সার্ভার কেবল ক্যোয়ারী ওয়ার্কস্পেসের মতো জিনিসের জন্য প্রথম 4 গিগাবাইট মেমরি ব্যবহার করে। (এবং এটি 4GB এর জন্য ওএসের সাথেও লড়াই করছে - অন্য যে কোনও চলমান অ্যাপ্লিকেশনগুলিও সেই মেমরির জন্য প্রতিযোগিতা করবে))

4 গিগাবাইট অনেকটা শোনাতে পারে তবে এমন একটি ক্যোয়ারী লিখতে তুলনামূলক সহজ যা চালানোর জন্য বেশ কয়েকটি গিগাবাইট মেমরির প্রয়োজন। যখন যথেষ্ট অনুসন্ধানগুলি পর্যাপ্ত মেমরির দাবি করে, এসকিউএল সার্ভার RESOURCE_SEMAPHORE অপেক্ষা করে কারণ কোয়েরিগুলি শুরু করার জন্য পর্যাপ্ত মেমরি পেতে পারে না। RESOURCE_SEMAPHORE_QUERY_COMPILE এর অর্থ তারা একটি কার্যনির্বাহী পরিকল্পনা সংকলন করতে পর্যাপ্ত মেমরি পেতে পারে না - এবং হ্যাঁ এটি বেশ খারাপ।

আপনি কিভাবে এটি ঠিক করবেন?

  • একটি -৪-বিট ওএসে স্যুইচ করুন (আপনি যে ওএসটি চালাচ্ছেন তা যাই হোক না কেন সমর্থন অনেক দীর্ঘ)
  • এসকিউএল সার্ভারের একটি 64-বিট বিল্ডে স্যুইচ করুন
  • সার্ভারে মেমরির চাহিদা হ্রাস করুন (এই বাক্সে অন্য কোনও অ্যাপ্লিকেশন চালাবেন না, এবং এটি 32-বিট বাক্সগুলিতে বিশেষত সমালোচনা যেহেতু আমরা কেবল 4 জিবিতে ক্যাপড আছি)
  • AWE / PAE স্যুইচগুলির সাহায্যে আরও মেমরি ব্যবহার করুন - কেবলমাত্র RESOURCE_SEMAPHORE এর জন্য কাজ করে না কারণ এসকিউএল সার্ভার কেবল ক্যোরি ওয়ার্কস্পেসের জন্য প্রথম 4 জিবি ব্যবহার করতে পারে
  • প্রশ্নগুলি এবং সূচীগুলি টিউন করুন যাতে তাদের কম স্মৃতি দরকার need

আমি এটি শেষ বলতেও দ্বিধা বোধ করি কারণ 32-বিট ইস্যুটি খুব খারাপ, এবং এটি এসকিউএল সার্ভারের পুরানো সংস্করণগুলিতে সত্যিই শক্ত hard আপনি যদি কারেন্টের সাথে থাকেন তবে আপনি পরিকল্পনার ক্যাশে দিয়ে যেতে পারেন এবং মেমরি মঞ্জুরি অনুসারে ক্যোয়ারী বাছাই করতে পারেন, সর্বাধিক অনুদান গ্রহীতাদের সন্ধান করতে পারেন এবং সেগুলি টিউন করতে পারেন। যদিও এই পুরানো এন্টিকের কোনও বিকল্প নয়।

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