মাইএসকিউএল সঞ্চিত রুটিনগুলিতে গতিশীল এসকিউএল


13

সঞ্চিত রুটিন এবং ট্রিগারগুলিতে বিধিনিষেধ অনুসারে , গতিশীল এসকিউএল ব্যবহার করা যাবে না (সংস্করণ 5.0.13 এবং পরবর্তী সংস্করণে সঞ্চিত পদ্ধতির জন্য সীমাবদ্ধতা প্রত্যাহার করা হয়েছে)। কেন এই সীমাবদ্ধতা জায়গায়? এবং কেন এটি প্রক্রিয়াগুলির জন্য উত্তোলন করা হয় তবে কার্যকরী বা ট্রিগার নয়?

উত্তর:


8

কেবল প্রশ্নটি শুনে আমি দুটি দিক নিয়ে ভাবতে পারি:

সহায়তা # 1: কার্যকারিতাটি বিশদভাবে বিবেচিত হবে

যদি এটি হয় তবে এর থেকে বোঝা যায় যে কোনও ফাংশনটিতে একই পরামিতিগুলির নির্দিষ্ট পরামিতিগুলির সেটগুলির জন্য উপাত্ত উপস্থাপন করা উচিত, যখন আপনি ফাংশনটি কল করেন তখন কোনও বিষয় নয়।

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

আপনি যদি ডায়নামিক এসকিউএল এর মাধ্যমে কোনও ফাংশনের অন্তর্নিহিত টেবিলগুলি পরিবর্তন করতে পারেন? আপনি একটি DETERMINISTIC ফাংশনের সংজ্ঞা লঙ্ঘন করছেন।

লক্ষ্য করুন যে মাইএসকিউএল /etc/my.cnf এ এই বিকল্পটি যুক্ত করেছে

log-bin-trust-function-creators

যদিও এটি বলার জন্য একটি ওভারসিম্প্লিফিকেশন হতে পারে, এটি ডিটারমিনিস্টিক সম্পত্তি কঠোরভাবে প্রয়োগ না করে ফাংশনগুলিকে বাইনারি লগগুলিতে ডেটা লেখার অনুমতি দেয়।

সহায়তা # 2: ট্রিগারগুলি আবার ঘুরিয়ে দিতে সক্ষম হওয়া উচিত

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

আপনার কাছে মূলত এমন ডেটা থাকবে যা কেবলমাত্র এমভিসিসিতে চতুর্ভুজ বৃদ্ধি পায় (এমনকি তাত্পর্যপূর্ণ)। কম-বেশি বলতে গেলে ট্রিগারগুলির সাথে যে এস -কিউএল-র রোলব্যাক পরিচালনা করার প্রক্রিয়াটি অ-DETERMINISTIC হতে পারে তা ধর্মবিরোধী জটিল হবে।

এই দুটি দিকের আলোকে, আমি নিশ্চিত যে মাইএসকিউএল বিকাশকারীরা এই বিষয়গুলি সম্পর্কে ভেবেছিলেন এবং সীমাবদ্ধতার চাপিয়ে তাড়াতাড়ি সেগুলি বরখাস্ত করেছেন।

তাহলে, প্রক্রিয়াগুলির জন্য বাধা কেন? সোজা কথায়, DETERMINISTIC বৈশিষ্ট্য বা রোলব্যাক নিয়ে কোনও উদ্বেগ নেই।


3
অন্যান্য ডিবিএমএস যদি এমভিসিসি এবং গতিশীল এসকিউএলকে ট্রিগারগুলিতে খুব ভাল সমর্থন করতে পারে তবে এতটা "অধার্মিক জটিল" হতে পারে না।
a_horse_with_no_name

1
আসলে, @ এ_হর্স_বিহীন_নাম_নাম, আপনি ঠিক বলেছেন। ওরাকল এবং পোস্টগ্র্যাস এসকিউএল এর জন্য, ধর্মবিরোধী জটিল কোড কোড করা হয়েছে। আপনার মন্তব্যের জন্য +1। মাইএসকিউএল একাধিক স্টোরেজ ইঞ্জিন নিয়ে কাজ করার প্রতিবন্ধকতা রয়েছে তাই রোলব্যাক এবং নির্ধারণবাদ স্টোরেজ ইঞ্জিন ক্রিয়াকলাপগুলির ওভারল্যাপের প্রয়োজন হতে পারে। এটা কিছুটা ভীতিজনক। হয়তো কারও কাছে "বেদাহীন জটিল" পুরোপুরি InnoDB তে ঠেলে দেওয়ার সাহস হবে। এমনকি আরও পছন্দসই হবে স্টোরেজ-ইঞ্জিন নির্দিষ্ট ট্রিগার বাস্তবায়ন তৈরি করা যাতে এটি একই ক্যোয়ারির মধ্যে স্টোরেজ ইঞ্জিনগুলিকে মেশানো দেয় না।
রোল্যান্ডোমাইএসকিউএলডিবিএ 21

5

এটি একটি দুর্দান্ত প্রশ্ন, তবে আমি উত্তরটি জানি না। আমি ধারণা করি এটির অভ্যন্তরীণ দলে যেতে হবে, তবে আমি জানি না যে তারা এই সাইটে বড় হবে। ইতিমধ্যে আমি আপনাকে কিছু উত্তর কমাতে সাহায্য করতে পারি।

শুরুর জন্য আমি এটি দেখতে পেয়েছি:

অন্তর্নিহিত অবজেক্টগুলির মেটাডেটা পরিবর্তন হয়ে গেলে ট্রিগার ক্যাশে সনাক্ত করতে পারে না। ট্রিগার ক্যাশে লোড হওয়ার পরে যদি ট্রিগার কোনও টেবিল ব্যবহার করে এবং টেবিলটি পরিবর্তিত হয়, তবে ট্রিগার পুরানো মেটাডেটা ব্যবহার করে পরিচালনা করে।

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

একই টোকেন দ্বারা, যখন আমি এই ব্লকটি পড়ি আমি একই জিনিস (ইঞ্জিন) মনে করি:

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

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


1

মূলত এটি সুরক্ষার কারণে। পদ্ধতির ব্যতিক্রম হ'ল কারণ পদ্ধতির মধ্যে গতিশীল এসকিউএল নির্বাহক ব্যবহারকারীর সুরক্ষা প্রসঙ্গ নির্ধারণ করা যেতে পারে। এর অর্থ হ'ল ইঞ্জিনটি কী কার্যকর হতে চলেছে তা না জানা সত্ত্বেও , এটি নিশ্চিত করতে পারে যে ব্যবহারকারীকে রেফারেন্সযুক্ত অবজেক্ট ( অ ) ব্যবহারের অনুমতি দেওয়া হয়েছে।

এর বাইরেও, কী হতে পারে তার কুৎসিত বিষয়গুলি আপনি উত্থাপন করতে পারেন, যদি এটি জায়েজ হত।

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