সরলতার জন্য, ট্রিগারগুলি হ'ল ডেটাবেস পরিবর্তনের কোনও প্রকারের ট্র্যাকিং বাস্তবায়নের উপায়। তবে, আপনি ট্রিগার ব্যবহার করার সময় হুডের নীচে কী ঘটে যায় সে সম্পর্কে আপনাকে সচেতন হওয়া দরকার।
মাইএসকিউএল স্টোরেড প্রক্রিয়া প্রোগ্রামিং অনুসারে , "ট্রিগার ওভারহেড" শিরোনামের 256 পৃষ্ঠায় নিম্নলিখিতটি বলেছেন:
এটি মনে রাখা জরুরী যে প্রয়োজন অনুসারে, ট্রিগারগুলি ডিএমএল বিবৃতিতে ওভারহেড যুক্ত করে যা তারা প্রয়োগ করে। ওভারহেডের প্রকৃত পরিমাণটি ট্রিগারটির প্রকৃতির উপর নির্ভর করবে, তবে --- যেহেতু সমস্ত মাইএসকিউএল ট্রিগার প্রতিটি সারি জন্য নির্বাহ করে --- ওভারহেড দ্রুত বিবরণীর জন্য জমা হতে পারে যা প্রচুর সংখ্যক সারি প্রসেস করে। সুতরাং আপনার ট্রিগারগুলিতে কোনও ব্যয়বহুল এসকিউএল স্টেটমেন্ট বা পদ্ধতিগত কোড স্থাপন করা এড়ানো উচিত।
ট্রিগার ওভারহেডের একটি বিস্তৃত ব্যাখ্যা 529-531 পৃষ্ঠায় দেওয়া হয়েছে। বিভাগটি থেকে সমাপ্তি বিন্দুতে নিম্নলিখিতটি উল্লেখ করা হয়েছে:
এখানে পাঠটি হ'ল: যেহেতু ডিএমএল স্টেটমেন্ট দ্বারা আক্রান্ত প্রতিটি সারির জন্য ট্রিগার কোড একবার কার্যকর করা হবে, তাই ট্রিগারটি সহজেই ডিএমএল কার্য সম্পাদনের সবচেয়ে গুরুত্বপূর্ণ উপাদান হয়ে উঠতে পারে। ট্রিগার বডিটির অভ্যন্তরের কোডটি যতটা সম্ভব হালকা ওজনের হওয়া দরকার এবং - বিশেষত - ট্রিগারটিতে থাকা কোনও এসকিউএল স্টেটমেন্ট যখনই সম্ভব সূচকগুলি দ্বারা সমর্থন করা উচিত।
ট্রিগার ব্যবহার করার সময় বইটিতে উল্লিখিত না হওয়া অন্য বিষয়: লগিং অডিট করার বিষয়টি যখন আসে তখন দয়া করে আপনি কী ডেটা লগ ইন করেছেন সে সম্পর্কে সচেতন হন। আমি এটি বলছি কারণ আপনি যদি মাইআইএসএএম টেবিলটিতে লগ করা পছন্দ করেন তবে মাইসাম টেবিলের প্রতিটি ইনসার্ট ইনসার্টের সময় একটি পূর্ণ টেবিল লক তৈরি করে। এটি একটি উচ্চ ট্র্যাফিক, উচ্চ-লেনদেনের পরিবেশে মারাত্মক বাধা হয়ে উঠতে পারে। তদ্ব্যতীত, যদি ট্রিগার কোনও ইনোডিবি টেবিলের বিপরীতে থাকে এবং আপনি মাইআইএসএএম-তে পরিবর্তনগুলি ট্রিগারের মধ্যে থেকে লগ করেন তবে এটি গোপনে এসআইডি সম্মতি অক্ষম করবে (অর্থাত্, স্বতঃপরীক্ষার আচরণে ব্লক লেনদেনকে হ্রাস করবে), যা এড়াতে পারা যায় না।
InnoDB টেবিল এবং লগিং পরিবর্তনগুলিতে ট্রিগার ব্যবহার করার সময়
- আপনি যে টেবিলটিতে লগ করেছেন সেটিও ইনোডিবি
- আপনি স্বতঃসিদ্ধকরণ বন্ধ করেছেন
- আপনি আরম্ভ করুন ট্রান্সাকশন ... কমিট / রোলব্যাক ব্লকগুলি পুরোপুরি করুন
এইভাবে, নিরীক্ষণ লগগুলি প্রধান সারণী হিসাবে কমিট / রোলব্যাক থেকে উপকৃত হতে পারে।
সঞ্চিত পদ্ধতি ব্যবহারের বিষয়ে, আপনাকে টেস্টের সন্ধানের বিরুদ্ধে ডিএমএলের প্রতিটি পয়েন্টে কঠোরভাবে স্টোরেজ পদ্ধতিটি কল করতে হবে। অ্যাপ্লিকেশন কোডের কয়েক হাজার লাইনের মুখে সহজেই লগিং পরিবর্তনগুলি মিস করতে পারে। ট্রিগারটিতে এই জাতীয় কোড স্থাপন করা সমস্ত ডিএমএল বিবৃতি সন্ধান করে।
বিচারকার্য স্থগিত রাখার আদেশ
ট্রিগারটি কতটা জটিল তার উপর নির্ভর করে এটি এখনও একটি বাধা হতে পারে। আপনি যদি নিরীক্ষণ লগিংয়ে বাধাগুলি হ্রাস করতে চান তবে কিছু করার আছে। তবে এর জন্য একটু পরিকাঠামো পরিবর্তন প্রয়োজন require
পণ্য হার্ডওয়্যার ব্যবহার করে, আরও দুটি ডিবি সার্ভার তৈরি করুন
এটি অডিট লগিংয়ের কারণে মূল ডেটাবেজে (এমডি) I / O রচনা হ্রাস করতে সার্ভার করবে। আপনি এটি কীভাবে সম্পন্ন করতে পারেন তা এখানে:
পদক্ষেপ 01) মূল ডাটাবেসে বাইনারি লগিং চালু করুন।
পদক্ষেপ 02) একটি সস্তা সার্ভার ব্যবহার করে, বাইনারি লগিং সক্ষম করে মাইএসকিউএল (এমডি হিসাবে একই সংস্করণ) সেটআপ করুন। এটি ডিএম হবেন। এমডি থেকে ডিএম-র প্রতিরূপ সেটআপ করুন।
পদক্ষেপ 03) দ্বিতীয় সস্তার সার্ভার ব্যবহার করে, বাইনারি লগিং সহ মাইএসকিউএল (এমডি হিসাবে একই সংস্করণ) সেটআপ করুন। --Replicate-do-table ব্যবহার করার জন্য প্রতিটি অডিট টেবিল সেটআপ করুন । এটি এউ হবে। ডিএম থেকে এইউ-র প্রতিরূপ সেটআপ করুন।
পদক্ষেপ 04) এমডি থেকে টেবিলের কাঠামোগত mysqldump করে এটিকে ডিএম এবং এউতে লোড করুন।
পদক্ষেপ 05) ব্ল্যাকহোল স্টোরেজ ইঞ্জিনটি ব্যবহার করতে MD এর সমস্ত অডিট টেবিল রূপান্তর করুন
পদক্ষেপ 06) ব্ল্যাকহোল স্টোরেজ ইঞ্জিনটি ব্যবহার করতে ডিএম এবং এউতে সমস্ত সারণী রূপান্তর করুন
পদক্ষেপ 07) মাইআইএসএএম স্টোরেজ ইঞ্জিনটি ব্যবহার করতে এউ-এর সমস্ত নিরীক্ষণ সারণী রূপান্তর করুন
হয়ে গেলে
- ডিএম তার বাইনারি লগে কেবল এমডি থেকে রেকর্ড করুন এবং স্টাফ রেকর্ড করবেন
- সঙ্গে --replicate-do-টেবিল সব নিরীক্ষা টেবিলের উপর ফিল্টার, এইউ ডিএম থেকে প্রতিলিপি নির্মাণ করতে হবে
এটি যা করে তা হ'ল আলাদা ডিবি সার্ভারে নিরীক্ষণের তথ্য এবং এমডি সাধারণত যে লেখার আই / ও অবক্ষয় হ্রাস করে তা হ্রাস করে।