এই উদাহরণটি শেয়ারপয়েন্ট 2007 ডাটাবেস (এসপি) হোস্ট করে। এসপি বিষয়বস্তু ডাটাবেসের মধ্যে একটি বিশালভাবে ব্যবহৃত টেবিলের বিপরীতে আমরা অসংখ্য SELECT / INSERT ডেডলকগুলি অভিজ্ঞ করছি। আমি জড়িত সংস্থানগুলি সংকুচিত করেছি, উভয় প্রক্রিয়াতে নন-ক্লাস্টারড ইনডেক্সে লক প্রয়োজন।
INSERT- এ SELECT রিসোর্সে একটি আইএক্স লক প্রয়োজন এবং SELECT INSERT রিসোর্সে একটি এস লক দরকার। অচলাবস্থা গ্রাফ চিত্রিত এবং তিনটি সংস্থান, 1.) দুটি নির্বাচন (প্রযোজক / গ্রাহক সমান্তরাল থ্রেড) এবং 2) ইনসার্ট।
আমি আপনার পর্যালোচনার জন্য ডেডলক গ্রাফ সংযুক্ত করেছি। কারণ এটি মাইক্রোসফ্ট কোড এবং টেবিল স্ট্রাকচার আমরা কোনও পরিবর্তন করতে পারি না।
যাইহোক, আমি এমএসএফটি এসপি সাইটে পড়েছি যে তারা ম্যাক্সডপ ইন্সটেন্স স্তর স্তর কনফিগারেশন বিকল্পটি 1 এ সেট করার প্রস্তাব দেয় this
অতএব, আমি চেষ্টা করেছি এবং এই নির্বাচনী বিবৃতিগুলিকে সমান্তরাল থেকে আটকাতে চেষ্টা করব। আমি জানি এটি কোনও সমাধান নয়, সমস্যা সমাধানের ক্ষেত্রে সহায়তা করার জন্য আরও একটি অস্থায়ী পরিবর্তন। তবুও, কাজের চাপ পরিবর্তন না হওয়া সত্ত্বেও, "সমান্তরালতার জন্য মূল্য প্রান্তিককরণ" 25 থেকে 40 এর মধ্যে বাড়িয়েছি (সलेक्ट / INSERT ঘন ঘন ঘটছে) অচলাবস্থা অদৃশ্য হয়ে গেছে। আমার প্রশ্ন কেন?
এসপিআইডি 356 ইনসার্টের নন-ক্লাস্টারড ইনডেক্সের একটি পৃষ্ঠায় একটি আইএক্স লক রয়েছে
এসপিআইডি 690 নির্বাচন এক্সিকিউশন আইডি 0 একই নন-ক্লাস্টারড ইনডেক্সের একটি পৃষ্ঠায় এস লক রয়েছে
এখন
এসপিআইডি 356 এসপিআইডি 690 রিসোর্সে আইএক্স লক চায় তবে এটি চালিয়ে যায় না কারণ এসপিআইডি 356 এসপিআইডি 690 এক্সিকিউশন আইডি দ্বারা ব্লক করা হচ্ছে এসপিআইডি
690 এক্সিকিউশন আইডি 1 এসপিআইডি 356 রিসোর্সে একটি এস লক চায় তবে এটি পেতে পারে না কারণ এসপিআইডি 690 এক্সিকিউশন আইডি 1 এসপিআইডি 356 দ্বারা অবরুদ্ধ করা হচ্ছে এবং এখন আমাদের কাছে আমাদের অচলাবস্থা রয়েছে।
আমার স্কাইড্রাইভে এক্সিকিউশন প্ল্যান পাওয়া যাবে
সম্পূর্ণ ডেডলকের বিশদটি এখানে পাওয়া যাবে
যদি কেউ আমাকে বুঝতে সহায়তা করে তবে আমি কেন এটির সত্যই প্রশংসা করব।
ইভেন্টআরসিভারস টেবিল।
Uniqueidentifier তিনি 16 তম আইডি
নাম nvarchar কোন 512
uniqueidentifier তিনি 16 তম SiteId
WebId uniqueidentifier তিনি 16 তম
HostId uniqueidentifier তিনি 16 তম
HostType int- এ No 4
ItemId int- এ No 4
DirName nvarchar কোন 512
nvarchar কোন 256 LeafName
টাইপ int- No 4
SequenceNumber int- এ No 4
পরিষদের nvarchar কোন 512
ক্লাস nvarchar না 512
ডেটা এনভারচর ন 512
ফিল্টার এনভারচর ন 512
সোর্সড আইডি টি কনটেন্ট টাইপআইডি নং 512
সোর্স টাইপ ইন্ট
নং 4
ক্রেডেনসিয়াল ইন্ট নং 4 কনটেক্সট টাইপ ভেরিবিনারি ন 16
ContextEventType varbinary তিনি 16 তম
ContextId varbinary তিনি 16 তম
ContextObjectId varbinary তিনি 16 তম
ContextCollectionId varbinary তিনি 16 তম
index_name index_description index_keys
EventReceivers_ByContextCollectionId nonclustered প্রাথমিক SiteId অবস্থিত, ContextCollectionId
EventReceivers_ByContextObjectId প্রাথমিক SiteId অবস্থিত nonclustered, ContextObjectId
EventReceivers_ById nonclustered, প্রাথমিক SiteId অবস্থিত, ID অনন্য
EventReceivers_ByTarget ক্লাস্টার, প্রাথমিক SiteId, WebId, HostId, HostType, প্রকার, ContextCollectionId, ContextObjectId অবস্থিত অনন্য, ContextId, ContextType, ContextEventType, SequenceNumber,
એસেম্বলি, শ্রেণি ইভেন্টআরসিভারস_আইডুয়ানিক নন-ক্লাস্টার্ড, অনন্য, অনন্য কী প্রাইমারি আইডিতে অবস্থিত
proc_InsertEventReceiver
এবংproc_InsertContextEventReceiver
না যে আমরা XDL নেই দেখতে পারেন? এছাড়াও সমান্তরালতা হ্রাস করতে সার্ভার-ওয়াইড সেটিংসের সাথে ফিউজিংয়ের পরিবর্তে এই বিবৃতিগুলি সরাসরি (ম্যাক্সডপ 1 ব্যবহার করে) প্রভাব ফেলবেন না কেন?