এসকিউএল সার্ভারে নির্বাহ পরিকল্পনা কীভাবে নির্ধারণ করা হয়?


13

নিম্নলিখিত ধ্রুবক দেওয়া:

  • একই কাঠামোর সাথে একই ডাটাবেস (টেবিল, সূচিপত্র ইত্যাদি)
  • একই তথ্য
  • একই এসকিউএল সার্ভার এবং হার্ডওয়্যার কনফিগারেশন
  • একই পরিসংখ্যান
  • ক্লায়েন্টে একই এসইটি বিকল্পগুলি
  • একই এসকিউএল সার্ভার সংস্করণ
  • একই ট্রেস পতাকা

এই ধ্রুবকগুলি দেওয়া, এসকিউএল সার্ভার সর্বদা কোনও প্রদত্ত প্রশ্নের জন্য একই পরিকল্পনা তৈরি করবে?

যদি না হয়, অন্য বিবেচনা আছে? ননডেটেরিনিজমের একটি উপাদানও কি বিবেচনা করা উচিত?


একই পরিকল্পনা বলা ভুল হবে তবে আমরা একই পরিকল্পনা বলতে পারি। বাহ্যিক কারণগুলির সাথে সাথে ডিবিএ / বিকাশকারী নিয়ন্ত্রণ করতে পারে; এসকিউএল সার্ভার ইঞ্জিনের ভিতরে "ক্যোয়ারী প্ল্যান অপটিমাইজেশন অ্যালগরিদম" এবং "অভ্যন্তরীণ ক্যোয়ারী কস্ট অ্যালগরিদম" লেখা থাকে। সমস্ত উপায়ে "কী চয়ন করবেন" বলার মতো নিয়ন্ত্রণ আমাদের নেই। আমরা সেরা চয়ন করতে ইঞ্জিনকে গাইড করতে বাহ্যিক এনএভিভি সেট করতে পারি। প্রদত্ত ক্যোয়ারির জন্য যদি অপ্টিমাইজারটি দুটি কার্যকর করার পরিকল্পনা নিয়ে আসে তবে 0.001 ব্যয়টির পার্থক্য বলতে পারি তবে আমি অনুমান করি যে এটি কার্যকর করার পরিকল্পনাটি কী অপ্রাসঙ্গিক হবে।
অনুপ শাহ

আমি মনে করি না আপনি এই সম্পর্কে তাত্ত্বিক হতে হবে। আমি বিভিন্ন ডাটাবেস সহ 25 বছর কাজ করেছি এবং আরও কার্যকর করার জন্য প্রায়শই একটি ক্যোয়ারী পুনর্লিখন করা সম্ভব। এবং কখনও কখনও এটি কোয়েরি লেখার একটি উপায়ের সাথে কেন এটি আরও ভাল তা বোঝা খুব কঠিন।

উত্তর:


13

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

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

ক্যাভেট: আপনার তালিকার 'একই' শব্দের অর্থ সমস্ত ক্ষেত্রে একেবারে একইরূপে বিবেচিত হয় তবে তা সত্য । উদাহরণস্বরূপ, 'একই' পরিসংখ্যান দুটি সিস্টেমের উপর বিদ্যমান পারে, কিন্তু তারা শুধুমাত্র ঠিক একই যদি হিস্টোগ্রাম পদক্ষেপ এবং ঘনত্ব তথ্য দ্বারা অভিন্ন

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

আমি আপনার তালিকায় একটি জিনিস যুক্ত করব তা হ'ল দ্বিতীয় ডাটাবেসে কোনও পরিকল্পনার গাইডও রয়েছে check


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

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