বিভিন্ন প্রসেসে একই অস্থায়ী টেবিলগুলিতে লক থেকে ডেডলকস


17

আমি একটি অচলাবস্থা খুঁজে পেয়েছি যা এমন কিছু দেখাবে যা আমার অসম্ভব বলে মনে হয়েছিল। অচলাবস্থার সাথে দুটি প্রক্রিয়া জড়িত রয়েছে:

1. প্রক্রিয়া 8cf948 এসপিআইডি 63

  • অস্থায়ী টেবিলের একটি অল্টার টেবিল সম্পাদন করা হচ্ছে #PB_Cost_Excp_Process_Invoices_Work।

  • আইবি 456743580 আইটেমে #PB_Cost_Excp_Process_Invoices_W ورک

2. প্রক্রিয়া 4cb3708 এসপিআইডি 72

  • অস্থায়ী টেবিলের UPP এ সঞ্চালন করা হচ্ছে #PB_Cost_Excp_Process_Invoices_Work যা টেবিলটির নিজস্ব অনন্য অনুলিপি বলে মনে করা হচ্ছে।

  • একই পর্বের আইডি 455743580 সহ # পিবি_কোস্ট_এক্সসিপি_প্রসেস_ইনভয়েস_ ওয়ার্কে এস-এম লকটির মালিক !

এটি অসম্ভব বলে মনে করা হচ্ছে। আমি কিছু অনুপস্থিত করছি? এই দুটি এসপিআইডি-র মধ্যে কি কোনও # টেম্পোরারি টেবিলটি সত্যই পুনরায় ব্যবহৃত হয়েছিল?

এটি এসকিউএল সার্ভার ২০০৮ আর 2 সার্ভিস প্যাক 2 তে ক্রমযুক্ত আপডেট 1 (সংস্করণ 10.50.4260) সহ রয়েছে।

সম্পূর্ণ আনল্টারডড ডেডলক ট্রেস নীচে is দুটি প্রক্রিয়া কীভাবে একই টেবিলের নাম # PB_Cost_Excp_Process_Invoices_Work_SNIP_0000000D8519 সহ একই অবজেক্ট আইডিতে উভয়ই কাজ করছে তা নোট করুন:

12/14/2012 13:46:03,spid23s,Unknown,waiter id=process8cf948 mode=X requestType=wait
12/14/2012 13:46:03,spid23s,Unknown,waiter-list
12/14/2012 13:46:03,spid23s,Unknown,owner id=process4cb3708 mode=Sch-M
12/14/2012 13:46:03,spid23s,Unknown,owner-list
12/14/2012 13:46:03,spid23s,Unknown,objectlock lockPartition=0 objid=455743580 subresource=FULL dbid=2 objectname=tempdb.dbo.#PB_Cost_Excp_Process_Invoices_Work_________________________________________________________________________________0000000D8519 id=lock371705d00 mode=Sch-M associatedObjectId=455743580
12/14/2012 13:46:03,spid23s,Unknown,waiter id=process4cb3708 mode=Sch-M requestType=wait
12/14/2012 13:46:03,spid23s,Unknown,waiter-list
12/14/2012 13:46:03,spid23s,Unknown,owner id=process8cf948 mode=IX
12/14/2012 13:46:03,spid23s,Unknown,owner-list
12/14/2012 13:46:03,spid23s,Unknown,objectlock lockPartition=3 objid=455743580 subresource=FULL dbid=2 objectname=tempdb.dbo.#PB_Cost_Excp_Process_Invoices_Work_________________________________________________________________________________0000000D8519 id=lock3139b4780 mode=IX associatedObjectId=455743580
12/14/2012 13:46:03,spid23s,Unknown,resource-list
12/14/2012 13:46:03,spid23s,Unknown,Proc [Database Id = 8 Object Id = 1857974987]
12/14/2012 13:46:03,spid23s,Unknown,inputbuf
12/14/2012 13:46:03,spid23s,Unknown,EXEC PB_ProcessExc_Costs_Submit_SP @SiteKey, @PWDate
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.DR_SubmitPaperwork_SP line=174 stmtstart=12912 stmtend=13018 sqlhandle=0x03000800cb72be6e500434018da000000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,EXEC PB_ProcessExc_Costs_Create_SP

    -- Clean up work table
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.PB_ProcessExc_Costs_Submit_SP line=138 stmtstart=11890 stmtend=12012 sqlhandle=0x03000800428c1f1950f833018da000000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,UPDATE #PB_Cost_Excp_Process_Invoices_Work
    SET PBCEPrcInv_RtlPkg_Item_Quantity = RtlPkg_Item_Quantity
    FROM #PB_Cost_Excp_Process_Invoices_Work
        INNER JOIN Item_Packages (NOLOCK)
            ON PBCEPrcInv_ItemPkg_Key = ItemPkg_Key
        INNER JOIN Retail_Packages (NOLOCK)
            ON ItemPkg_RtlPkg_Key = RtlPkg_Key

    -- Lookup pricebook cost
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.PB_ProcessExc_Costs_Create_SP line=25 stmtstart=2394 stmtend=3050 sqlhandle=0x030008003a082846321f46018da000000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,executionStack
12/14/2012 13:46:03,spid23s,Unknown,process id=process8cf948 taskpriority=0 logused=0 waitresource=OBJECT: 2:455743580:0  waittime=3739 ownerId=707053534 transactionname=UPDATE lasttranstarted=2012-12-14T13:45:59.327 XDES=0x3c4502930 lockMode=X schedulerid=4 kpid=7276 status=suspended spid=72 sbid=0 ecid=0 priority=0 trancount=2 lastbatchstarted=2012-12-14T13:45:58.337 lastbatchcompleted=2012-12-14T13:45:58.337 clientapp=PDI WCF Services - pdidb01-PDIMaster.cfg hostname=PDIWEB01 hostpid=2084 loginname=pdiuser isolationlevel=read committed (2) xactid=707053534 currentdb=8 lockTimeout=4294967295 clientoption1=673316896 clientoption2=128568
12/14/2012 13:46:03,spid23s,Unknown,Proc [Database Id = 8 Object Id = 1857974987]
12/14/2012 13:46:03,spid23s,Unknown,inputbuf
12/14/2012 13:46:03,spid23s,Unknown,EXEC PB_ProcessExc_Costs_Submit_SP @SiteKey, @PWDate
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.DR_SubmitPaperwork_SP line=174 stmtstart=12912 stmtend=13018 sqlhandle=0x03000800cb72be6e500434018da000000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,EXEC dbo.PB_ProcessExc_Costs_CreateInvoiceWorkTable_SP
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.PB_ProcessExc_Costs_Submit_SP line=58 stmtstart=5782 stmtend=5894 sqlhandle=0x03000800428c1f1950f833018da000000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,ALTER TABLE #PB_Cost_Excp_Process_Invoices_Work DROP COLUMN PBCEPrcInv_Filler
12/14/2012 13:46:03,spid23s,Unknown,frame procname=PDICompany_218_01.dbo.PB_ProcessExc_Costs_CreateInvoiceWorkTable_SP line=50 stmtstart=5382 stmtend=5538 sqlhandle=0x0300080025d75a14ffff4701969f00000100000000000000
12/14/2012 13:46:03,spid23s,Unknown,executionStack
12/14/2012 13:46:03,spid23s,Unknown,process id=process4cb3708 taskpriority=0 logused=0 waitresource=OBJECT: 2:455743580:3  waittime=3739 ownerId=707052778 transactionname=ALTER TABLE lasttranstarted=2012-12-14T13:45:58.517 XDES=0x5f48bce80 lockMode=Sch-M schedulerid=6 kpid=7212 status=suspended spid=63 sbid=0 ecid=0 priority=0 trancount=1 lastbatchstarted=2012-12-14T13:45:58.513 lastbatchcompleted=2012-12-14T13:45:58.513 clientapp=PDI WCF Services - pdidb01-PDIMaster.cfg hostname=PDIWEB01 hostpid=2084 loginname=pdiuser isolationlevel=read committed (2) xactid=707052778 currentdb=2 lockTimeout=4294967295 clientoption1=673316896 clientoption2=128568
12/14/2012 13:46:03,spid23s,Unknown,process-list
12/14/2012 13:46:03,spid23s,Unknown,deadlock victim=process4cb3708
12/14/2012 13:46:03,spid23s,Unknown,deadlock-list

হালনাগাদ

প্রশ্নযুক্ত মেশিনটি টাস্ক ম্যানেজার এবং ডিভাইস ম্যানেজারে 16 টি প্রসেসর দেখায়, তাই লক বিভাজন সক্ষম করা হয়েছে, এবং দুটি লক পৃথক লক পার্টিশনে রয়েছে। আমি জানি না লক পার্টিশন করা এখানে একটি অবদানমূলক কারণ কিনা।

আমি এই আকর্ষণীয় পোস্টটি সিএসএস এসকিউএল সার্ভার ইঞ্জিনিয়ার্স ব্লগেও পেয়েছি ।

আপডেট 2

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

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

আপডেট 3 - 2012-12-19

অন্য গ্রাহকের এসকিউএল সার্ভার 2012 বিল্ড 11.0.2100 এ একই সমস্যা রয়েছে। ক্রমযুক্ত আপডেটের বিবরণীতে আমি এই সমস্যার জন্য কোনও সমাধানের কোনও উল্লেখ দেখতে পাইনি। গবেষণা।

আপডেট 4 - 2013-02-13

মাইক্রোসফ্ট নিম্নলিখিত আপডেটগুলিতে এই বাগের জন্য সমাধানটি প্রকাশ করেছে:


@ অ্যারনবার্ট্র্যান্ড: না, আমরা # টেম্প টেবিল ক্যাচিং চাই না। এটি একই সংযোগে যথেষ্ট খারাপ হবে - প্রক্রিয়াগুলির মধ্যে খুব কম ব্যবহার করা হচ্ছে। আমার কাছে .xdl ফাইল নেই, কেবল ট্রেস পতাকা 1222 তথ্য।
পল উইলিয়ামস

আমরা এই # টিম্প টেবিলগুলি স্পষ্টভাবে বাদ দিচ্ছি যখন সেগুলি সম্পন্ন করা হবে।
পল উইলিয়ামস

2
আমি এখনও কোথাও .xdl ফাইলটি ক্যাপচার এবং পোস্ট করার পরামর্শ দিচ্ছি যাতে অন্যরা আরও ঘনিষ্ঠভাবে নজর দিতে পারে - এতে আরও ভাল বিশদ থাকবে।
অ্যারন বারট্রান্ড

2
আমি নিশ্চিত করতে পারি যে এখানে লক বিভাজন জড়িত রয়েছে। এই পোস্টগুলিতে ডেডলকগুলি জড়িত রয়েছে এবং লক পার্টিশনের কারণে বিশ্লেষণ সম্পর্কে কিছু বিশদ রয়েছে। bit.ly/Ruzmym bit.ly/W7yuRK তবে কেন জানি না যে দুটি সেশন একই অবজেক্টআইডি পোস্ট করেছে।
রোজি পি থমাস

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

উত্তর:


15

4

আমরা এই সমস্যাটি সম্পর্কে মাইক্রোসফ্টের সাথে একটি মামলা খোলার চেষ্টা করেছি। মাইক্রোসফ্ট নিশ্চিত করেছে যে এই ত্রুটিটি এসকিউএল সার্ভার ২০১২-কেও প্রভাবিত করে। তারা এসকিউএল সার্ভার ২০১২ সার্ভিস প্যাক ২-এ সমাধান প্রকাশ করার পরিকল্পনা করছে (আমি এই উত্তরটি লেখার সময় প্রকাশিত হয়নি)।

মাইক্রোসফ্ট এই সার্ভিস প্যাকটি প্রকাশ না করা পর্যন্ত এসকিউএল সার্ভার 2012 ব্যবহারকারীরা ট্রেস পতাকা 1229 এর মাধ্যমে লক পার্টিশনটি অক্ষম করে সমস্যাটিকে বাইপাস করতে পারবেন ।

মনে রাখবেন যে এই সমস্যাটি কেবলমাত্র 16 বা তার বেশি প্রসেসরযুক্ত মেশিনে প্রযোজ্য।

লক বিভাজন সম্পর্কে আরও তথ্য

মাইক্রোসফ্ট সমর্থন আমার ধন্যবাদ! তারা খুব প্রম্পট এবং সহায়ক ছিল।

হালনাগাদ

এসকিউএল সার্ভার 2012 এসপি 1 এর জন্য এসকিউএল সার্ভার 2012 সংশ্লেষিত আপডেট 2 এ বাগটি ঠিক করা হয়েছে

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