পার্টিশনযুক্ত কলামস্টোর ডেডলকগুলি কীভাবে নির্বাচন করবেন তা নির্বাচন করুন


10

এসকিউএল সার্ভার ২০১ 2016 সালে আমার কাছে তিনটি ক্লাস্টারড কলামস্টোর সূচক (সিসিআই) সারণী রয়েছে these এই সমস্ত সিসিআই টেনেন্ট আইডির ভিত্তিতে একই বিভাজন স্কিমে রয়েছে। ইদানীং এবং অবিচ্ছিন্নভাবে, আমি এই টেবিলগুলিতে যোগদান করে সহজ নির্বাচনী বিবৃতিগুলিতে ডেডলক পাচ্ছি। ক্যোয়ারী উদাহরণস্বরূপ:

SELECT  TOP 33 r.tenantid
FROM    Table_r r
        INNER JOIN Table_cm cm ON r.MyKey=cm.MyKey 
        INNER JOIN Table_pe pe ON r.MyKey=pe.MyKey 
WHERE   r.TenantId = 69
        AND pe.TenantId = 69
        AND cm.TenantId = 69

ভুল বার্তা:

লেনদেন (প্রক্রিয়া আইডি 56) অন্য প্রক্রিয়া সহ জেনেরিক ওয়েবেট অবজেক্ট রিসোর্সে ডেডলকড ছিল এবং অচলাবস্থার শিকার হিসাবে নির্বাচিত হয়েছে। লেনদেনটি পুনরায় চালু করুন।

প্রাদান:

  • কোয়েরিতে সিসিআই ছাড়াও অন্য কোনও সূচি ব্যবহার করা থাকলে এটি অচল করে না।
  • আমি যদি তিনটি ট্যান্টিডিড ফিল্টার দুটিকে সরিয়ে ফেলি তবে এটি অচল হয়ে যায় না।
  • আমি যদি শীর্ষে 32 টি নির্বাচন করি বা এটি নিম্নতর হয় তবে এটি অচল করে না।
  • আমি যদি অপশন যুক্ত করি (ম্যাক্সডপ 1) এটি অচল করে না।
  • আমি এটিকে আমার স্ক্র্যাম্বলড প্রোড প্রতিরূপ, কেবলমাত্র মাধ্যমিক এবং কেবলমাত্র পিআরডি পড়তে পারি PRO
  • আমি DEV বা INT এ এই আচরণটি ত্রুটিযুক্ত করতে পারি না।
  • যদি আমি 3 টি টেবিলের সাথে যোগ হয় তবে এটি এখনও অচল হয়ে পড়ে It
  • ক্যোয়ারী নিজেই অচল করে দেয়। অন্য কোনও সক্রিয় প্রক্রিয়া না থাকলে এটি অচল হয়ে যাবে।
  • সমান্তরালতা ছাড়াই ক্যোয়ারী পরিকল্পনাগুলি অচলাবস্থা নেই

এখানে ডেডলক এক্সএমএল

আমাদের পিআরডি সংস্করণ:

মাইক্রোসফ্ট এসকিউএল সার্ভার 2016 (এসপি 2-সিইউ 5) - 13.0.5264.1 (এক্স 64) জানুয়ারী 10 2019 18:51:38 কপিরাইট (সি) মাইক্রোসফ্ট কর্পোরেশন এন্টারপ্রাইজ সংস্করণ (64-বিট) উইন্ডোজ সার্ভার 2012 আর 2 স্ট্যান্ডার্ড 6.3 (বিল্ড 9600) এ :) (হাইপারভাইজার)

আমি এই ক্যোয়ারিতে ডেডলকগুলি কীভাবে প্রতিরোধ করব?

উত্তর:


8

যেহেতু আপনি এসকিউএল সার্ভার ২০১ on এ রয়েছেন, এটি উল্লেখ করার মতো বিষয় যে কলামস্টোর সূচকগুলি অন্তর্ভুক্ত সমান্তরাল ডেডলকগুলির জন্য কমপক্ষে একটি সর্বজনীন বাগ ফিক্স রয়েছে:

ফিক্স: যখন আপনি এসকিউএল সার্ভার 2016 এবং 2017 এর ক্লাস্টারযুক্ত কলামস্টোর সূচকে একটি সমান্তরাল ক্যোয়ারী চালান তখন একটি অচলাবস্থা ঘটে

( প্রাথমিকভাবে লিঙ্কটি সরবরাহ করার জন্য ডেনিস রুবাশকিনকে ধন্যবাদ )

এটি এসপি 1 সিইউ 7 এর অংশ হিসাবে প্রকাশিত হয়েছিল। যদি আপনি সেই সিইউ পর্যন্ত না থাকেন তবে আপনার এটি শট দেওয়া উচিত। এই ফিক্সটি এসপি 2 (যে কোনও সিইউ) তে অন্তর্ভুক্ত করা হবে।

সাধারণভাবে, আন্তঃ-কোয়েরি সমান্তরালতা ডেডলকগুলি ঠিক করার জন্য দুটি পন্থা:

  • এড়ানোর উপমা (কোয়েরি সুরকরণ যাতে এটি সমান্তরাল যেতে না, একটি ব্যবহার করে MAXDOPইঙ্গিতটি, ইত্যাদি) - এই মধ্যে আবৃত করা হয় অন্যান্য উত্তর দ্বারা টমাস Costers
  • এসকিউএল সার্ভারে সর্বশেষতম পরিষেবা প্যাক / সংযোজনীয় আপডেটগুলি প্রয়োগ করুন

2

আপনি কি ইন্ট্রা-কোয়েরি সমান্তরাল থ্রেড ডেডলকগুলিতে নিম্নলিখিত ব্লগটি চেক করেছেন?

SyncPointযদি আমি ভুল করছি না রিসোর্স একটি বিনিময় ঘটনা ব্যবহারের নির্দেশ করে।
আপনার অচলাবস্থার অংশগ্রহণকারীদের দিকে তাকিয়ে আপনি দেখতে পাবেন যে তারা সবাই একই স্পাইড (55) এবং ব্যাচ (0) থেকে আসছে তবে তারা বিভিন্ন থ্রেড ব্যবহার করছে। এটি ইঙ্গিত দেয় যে এগুলি সমস্ত একই প্যারালাল ক্যোয়ারির অংশ এবং এটি নিশ্চিত হয়ে গেছে যে আপনি যখনই কোয়েরিটি চালাচ্ছেন আপনি কোনও ডেডলক পাবেন না MAXDOP 1। ইন্ট্রা-কোয়েরি সমান্তরাল থ্রেড ডেডলকসের ক্ষেত্রে, একটি একক ক্যোয়ারির থ্রেডগুলি আপনার ক্ষেত্রে সিঙ্ক্রোনাইজেশন অবজেক্টস, সিঙ্কপয়েন্টগুলির জন্য অপেক্ষা করে একে অপরকে অচল করে দেবে।

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

তবে এই দুটি বিকল্পের সাথে ঝাঁকুনির আগে, আপনি সর্বশেষতম এসপি / সিইউতে রয়েছেন কিনা তা পরীক্ষা করে দেখুন।

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