RECOMPILE ক্যোয়ারী ইঙ্গিতটি ব্যবহার করার সময় প্রশ্নের মধ্যে মৃত্যুর সময় পার্থক্য


16

একই এসকিউএল সার্ভার 2005 উদাহরণে আমার প্রায় দুটি অভিন্ন প্রশ্ন চলছে:

  1. SELECTলিনকিউ দ্বারা উত্পাদিত প্রথমটি হ'ল মূল ক্যোয়ারী (আমি জানি, আমি জানি ... আমি অ্যাপ্লিকেশন বিকাশকারী নই, কেবল ডিবিএ :)।
  2. দ্বিতীয়টি প্রথমটির মতো একই, OPTION (RECOMPILE)শেষে একটি যুক্ত হয়েছে ।

অন্য কিছুই পরিবর্তন করা হয়নি।

প্রথমটি প্রতিবার তার রান 55 মিনিট সময় নেয়।
দ্বিতীয়টি 2 সেকেন্ড সময় নেয়।

উভয় ফলাফল সেট অভিন্ন।

এই ইঙ্গিতটি পারফরম্যান্সে এ জাতীয় নাটকীয় উপার্জন কেন করবে?

অনলাইনে বুকস অনলাইন এন্ট্রি RECOMPILEখুব বিস্তারিত ব্যাখ্যা দেয় না:

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

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

যেহেতু আমার ক্যোয়ারিতে প্রচুর স্থানীয় ভেরিয়েবল রয়েছে, তাই আমার অনুমান যে এসকিউএল সার্ভার যখন আমি OPTION (RECOMPILE)ক্যোয়ারী ইঙ্গিতটি ব্যবহার করি তখন এটি (গুরুতরভাবে) অনুকূল করতে সক্ষম হয় ।

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

আমি এটি ব্যবহার করা উচিত? যদি তা না হয় তবে কী কোনও উপায় আছে যে আমি এসকিউএল সার্ভারকে এই ইঙ্গিতটি ছাড়াই এবং অ্যাপ্লিকেশনটি পরিবর্তন না করেই আরও কার্যকর সম্পাদন পরিকল্পনা ব্যবহার করতে বাধ্য করতে পারি?

উত্তর:


16

মাইক্রোসফ্ট এসকিউএল সার্ভার 2005-এ কোয়েরি অপটিমাইজারের দ্বারা ব্যবহৃত পরিসংখ্যান সম্পর্কিত নিবন্ধে নথি হিসাবে রয়েছে

আপনি যদি কোনও প্যারামিটার বা আক্ষরিক পরিবর্তে ক্যোয়ারী প্রিকিকেটে একটি স্থানীয় ভেরিয়েবল ব্যবহার করেন, তবে অপটিমাইজারটি হ্রাস-মানের অনুমান, বা ভবিষ্যদ্বাণীটির নির্বাচন বাছাইয়ের জন্য অনুমান করে। স্থানীয় ভেরিয়েবলের পরিবর্তে ক্যোয়ারীতে প্যারামিটার বা আক্ষরিক ব্যবহার করুন

যখন অপ্টিমাইজারের কোনও কলামের জন্য কোনও ব্যবহারযোগ্য পরিসংখ্যান নেই তখন অনুমান করা হবে যে কোনও =প্রাকটিক 10% সারি, BETWEEN9% এবং >, >=, < and <=কোনওটির 30% এর সাথে মিলবে। যদি কলামের পরিসংখ্যান উপলব্ধ থাকে তবে একটি =শিকারী নীচের মত আলাদা আচরণ করা হবে।

এমনকি যখন স্থানীয় ভেরিয়েবলগুলি কোনও ক্যোয়ারীতে ব্যবহৃত হয়, তখন সমমানের পূর্বাভাসের ক্ষেত্রে অনুমানের চেয়ে ভাল এমন একটি অনুমান ব্যবহৃত হয়। " @local_variable = column_name" ফর্মের শর্তগুলির জন্য নির্বাচনীকরণটি কলাম_নামের জন্য হিস্টোগ্রাম থেকে গড় মান ফ্রিকোয়েন্সি ব্যবহার করে অনুমান করা হয়। সুতরাং, উদাহরণস্বরূপ, কলামের কলাম_নামে যদি সমস্ত অনন্য মান থাকে তবে তার একটি নির্বাচনের প্রাক্কলনটি 1/(number of unique values in column)ব্যবহার করা হবে যা সঠিক।

সুতরাং এটি মূলত ব্যবহারের মতোই OPTIMIZE FOR (UNKNOWN)। এটি সমতল 10%অনুমানের চেয়ে আরও সঠিক হতে পারে তবে আপনি যে সুনির্দিষ্ট মূল্যবোধগুলি অনুসন্ধান করছেন সেটি অনুসারে এটি উপযুক্ত নয়।

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

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

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