পুনরায় ব্যবহারের জন্য ক্যোয়ারী পরিকল্পনাগুলি বিবৃতি দ্বারা বিভক্ত করা আরও ভাল হবে?


11

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

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

আমার প্রশ্নটি: কোনও ব্যবহারকারী যদি একটি বিবৃতি কার্যকর করে যা মাল্টি-স্টেটমেন্ট ক্যোয়ারির অন্যতম বিবৃতি এটি কি মাল্টি-স্টেটমেন্ট ক্যোয়ারির জন্য ইতিমধ্যে ক্যাশে থাকা ক্যোয়ারী পরিকল্পনার সেই প্রাসঙ্গিক অংশটি ব্যবহার করতে পারে? আমি উত্তরটি প্রত্যাশা করি কারণ হ্যাশ মানগুলি স্পষ্টতই মেলে না, তবে মাল্টি-স্টেটমেন্ট ক্যোয়ারিতে প্রতিটি বিবৃতি হ্যাশ করা ভাল, যাতে তারা কোয়েরি থেকে পৃথক বিবৃতি চালিয়ে ব্যবহারকারীরা ব্যবহার করতে পারেন?

আমি আশা করি যে জটিলতাগুলি আমি বিবেচনায় নিচ্ছি না (এবং এগুলি আমি সত্যই জানতে চাই) তবে মনে হয় আমরা অনেকগুলি অনুসন্ধানের পরিকল্পনায় একই 'বিবৃতি পরিকল্পনা' সংরক্ষণ করতে পারছিলাম আরও জায়গা গ্রহণ এবং আরও গ্রহণ করা সিপিইউ এবং উত্পন্ন করার সময়।

যদিও আমার অজ্ঞতা প্রদর্শন করা যেতে পারে।


dbidএবং objectidউভয়েরই is_cache_key=1তাই আপনি বিভিন্ন সংকলিত বস্তুর মধ্যে পরিকল্পনার কোনও পুনরায় ব্যবহার পাবেন না।
মার্টিন স্মিথ

উত্তর:


11

যদি কোনও ব্যবহারকারী একটি বিবৃতি কার্যকর করে যা মাল্টি-স্টেটমেন্ট ক্যোয়ারির অন্যতম বিবৃতি এটি মাল্টি-স্টেটমেন্ট ক্যোয়ারির জন্য ক্যাশে থাকা ইতিমধ্যে ক্যোয়ারী পরিকল্পনার সেই প্রাসঙ্গিক অংশটি ব্যবহার করতে পারে?

না। এসকিউএল সার্ভারে প্ল্যান পুনঃব্যবহারের প্রাথমিক ইউনিটটি ব্যাচ

মাল্টি-স্টেটমেন্ট ক্যোয়ারিতে প্রতিটি বিবৃতি হ্যাশ করা ভাল, যাতে তারা কোয়েরি থেকে স্বতন্ত্র বিবৃতি চালানো ব্যবহারকারীরা ব্যবহার করতে পারেন?

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

আমি আশা করি যে জটিলতাগুলি আমি বিবেচনায় নিচ্ছি না

মনে হচ্ছে আপনি কেন জিজ্ঞাসা করছেন যে এসকিউএল সার্ভারটি বিবৃতি স্তরের পরিবর্তে ব্যাচ স্তরে ক্যাশে এবং পুনরায় ব্যবহারের জন্য ডিজাইন করা হয়েছিল। আমি সন্দেহ করি যে মূল ডিজাইনারদের বাদ দিয়ে যে কেউ এই প্রশ্নের কর্তৃত্বমূলক উত্তর দিতে পারে। যাইহোক, এটি আমার কাছে মনে হয় যে ব্যাচটি ব্যবহারের জন্য প্রাকৃতিক গ্রানুলারিটি কারণ এটি তুলনামূলকভাবে স্ব-নিযুক্ত প্রাকৃতিক একক কাজ, এবং বাস্তবায়ন জটিলতা এবং পরিকল্পনা পুনরায় ব্যবহারের সম্ভাবনার মধ্যে একটি যুক্তিসঙ্গত বাণিজ্য-উপস্থাপন করে।

কয়েকটি জিনিস রয়েছে যা ব্যাচগুলি সম্পূর্ণ স্ব-অন্তর্ভুক্ত করে না (উদাহরণস্বরূপ স্থানীয় অস্থায়ী টেবিলগুলি সঞ্চিত প্রক্রিয়া সীমানা জুড়ে তৈরি এবং রেফারেন্স করা হয়)। এই ব্যতিক্রমগুলি orthogonality হ্রাস করে এবং বছরের পর বছর ধরে অপ্রত্যাশিত 'ডিজাইনের মাধ্যমে' আচরণ এবং বাগের সাথে যুক্ত।

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