বিদেশী কীগুলি অচলাবস্থার কারণ হতে পারে এবং স্বীকৃত স্বল্পশট পড়তে বাধা দিতে পারে?


19

এটি থেকে একটি ফলোআপ প্রশ্ন: /programming/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot- স্বয়ংক্রিয়ভাবে

যদিও এখনও এক সাথে বড় রিপোর্ট চালানো হচ্ছে তখনও আমার এএসপি.এনইটি অ্যাপ্লিকেশনটিতে অচলাবস্থা / সময়সীমা স্থিতিশীল অবস্থা রয়েছে READ_COMMITTED_SNAPSHOT ON

সুতরাং আমার দুটি প্রশ্ন আছে:

  1. লেনদেনের বিচ্ছিন্নতা স্তরের স্ন্যাপশট প্রত্যাশিত / আদৌ কাজ করছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি ?
  2. আমি ধরে নিচ্ছি যে বিদেশী কীগুলি (ওয়েব-অ্যাপ্লিকেশনের টেবিলগুলিতে রিপোর্ট-টেবিলগুলিতে) অচলাবস্থার জন্য দায়বদ্ধ। আমি এই আকর্ষণীয় নিবন্ধটি পেয়েছি :

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

এফকে ডেডলক / টাইমআউট পরিস্থিতিগুলির জন্য সত্যই দায়ী কিনা আমি কীভাবে তা পরীক্ষা করতে পারি, তার মানে কি আমি এই বিদেশী চাবিগুলি মুছে ফেলতে পারি ডেডলকগুলি রোধ করতে (কোন গ্রহণযোগ্য প্রচেষ্টা হবে)?

দ্রষ্টব্য : আমি কেবল টেবিলগুলি থেকে পড়ছি যা অচলাবস্থার কারণ।

এই বিষয়ে কোন চিন্তা প্রশংসা করা হয়।


সম্পাদনা এখানে একটি ডেডলক-গ্রাফ রয়েছে । অচলাবস্থার কারণ কী তা বুঝতে কেউ আমাকে সাহায্য করতে পারে। মনে হয় এটি কোনও প্রতিবেদন ছাড়াই ঘটেছিল কেবল ওয়েব-অ্যাপ্লিকেশনের কারণে, যখন দুটি লেনদেন একই টেবিলটি লিখতে চায় (একটি আপডেট এবং একটি সন্নিবেশ, সন্নিবেশটি সঞ্চিত-প্রক্রিয়া হিসাবে থাকে)। এটি কেন পৃষ্ঠা লকগুলি অর্জন করে এবং কীভাবে কেবল সারি লকগুলি সক্ষম করে? সন্নিবেশ-এসপি ইতিমধ্যে ব্যবহার করে TRANSACTION ISOLATION LEVEL REPEATABLE READ

আমার দৃ strong় সন্দেহ আছে যে দুটি ট্রিগার (একটি আপডেট এবং একটি সন্নিবেশ) অচলাবস্থার জন্য দায়ী। এখানে সন্নিবেশ-ট্রিগারটি দেওয়া হচ্ছে:

CREATE TRIGGER [dbo].[CreateRMAFiDates] 
   ON  [dbo].[RMA] 
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    UPDATE RMA 
    SET [fiCreationDate]=(SELECT idDate FROM tdefDate 
        WHERE CONVERT(VARCHAR, INSERTED.Creation_Date, 112) = tdefDate.Text),
        [fiPopDate]=(SELECT idDate FROM tdefDate 
        WHERE CONVERT(VARCHAR, INSERTED.POP_Date, 112) = tdefDate.Text),
        [fiManufactureDate]=(SELECT idDate FROM tdefDate 
        WHERE CONVERT(VARCHAR, INSERTED.Manufacture_Date, 112) = tdefDate.Text)
    FROM INSERTED;
END

সুতরাং এই ট্রিগারটি আরএমএ-টেবিল আপডেট করে যা আপডেট-ট্রিগারটি আগুনের কারণ করে (কী ঘটে)। অচলাবস্থা-গ্রাফটি কি আমার অনুমানের বিষয়টি নিশ্চিত করে? আমি মনে করি আমি সেই ট্রিগারগুলি মুছে ফেলব এবং এমন এসপি তৈরি করব যা দিনে একবার চলমান থাকে যা যথেষ্ট পরিমাণে যথেষ্ট হবে, কারণ এই কলামটি কেবল এসএসএএস-কিউব (মোল্যাপ) এর জন্য।

সম্পাদনা করুন : যাইহোক, আমি এই ট্রিগারগুলি মোছার পরে আর কোনও অচলাবস্থা নেই :)

উত্তর:


16

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

অগ্রগতি করার একমাত্র উপায় হ'ল ডেডলক গ্রাফটি ক্যাপচার করা।

অন্য প্রশ্নের হিসাবে, আপনি কীভাবে চেক করতে পারেন যদি আপনি স্ন্যাপশট বিচ্ছিন্নভাবে পরিচালনা করছেন: সন্ধান করুন sys.dm_tran_active_snapshot_database_transactions


2

ফরেইন কী বৈধতা রয়েছে অধীনে (লকিং) ঘটতে শুদ্ধি জন্য প্রতিশ্রুতিবদ্ধ পড়ুন। স্ন্যাপশট বিচ্ছিন্নতা দেখুন : অখণ্ডতার জন্য হুমকি? বিশদ জন্য হুগো কর্নেলিস দ্বারা।

অচলাবস্থা গ্রাফটি অচলাবস্থার RM2.dbo.RMAকারণ হিসাবে দুটি যুগ্ম সম্পাদন দেখায় । আপনার ট্রিগাররা RMAএবং এর মধ্যে একটি যোগদানের শর্ত মিস করছে inserted

সম্ভবত মনে হয় এটি একটি পর্যবেক্ষণ এবং আপনার ট্রিগার দুর্ঘটনাক্রমে সমস্ত সারিগুলিকে আপডেট করছে RMAতাই একাধিক তত্স্র ট্রিগার মৃত্যুদণ্ড কার্যকর হলে ডেডলকগুলিতে অত্যন্ত সম্ভাবনা রয়েছে।

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