স্বাভাবিক সন্দেহভাজন:
- অ্যাডহকের ধ্রুবক, কোডের পরামিতি
- কোডে ডেটা ধরণের অমিল
- পরামিতি স্নিগ্ধ
পয়েন্ট 1: অপ্টিমাইজারটি ধ্রুবকগুলির জন্য সেরা পরিকল্পনাটি চয়ন করতে পারে।
স্থির পরিবর্তনসমূহ = পরিকল্পনা পরিবর্তন করুন change একটি প্যারাম্যাট্রিসড প্লেন পুনরায় পরিবর্তনযোগ্য
পয়েন্ট 2 ড্যাটাটাইপ অগ্রাধিকারের কারণে অন্তর্নির্মিত রূপান্তরগুলি প্রবর্তন করবে
যেমন এনভারচচার প্যারামিটারের তুলনায় ভার্চার কলাম
পয়েন্ট 3: প্যারামিটার মাস্কিং ব্যবহার করুন বা অজানা জন্য অপ্টিমাইজ
সম্পাদনা করুন: পরীক্ষা করতে: সঞ্চিত প্রকল্প চালান, sp_updestats চালান, আবার চালান। এটি ক্যাশেড প্ল্যানগুলিকে অকার্যকর করবে যা পরিকল্পনার ক্যাশে সাফ করার পরে আরও ভাল
সম্পাদনা: jcolebrand এর মন্তব্য পরে
আপনি বেশ কয়েকটি উপায়ে স্নিফিং অক্ষম করতে পারেন। প্রধান 3 টি
- কম্পাইল। এটি নির্বোধ আইএমও।
- অজানা জন্য অপ্টিমাইজ (sic)
- প্যারামিটার মাস্কিং
পরামিতি মাস্কিং:
DECLARE @MaskedParam varchar(10)
SELECT @MaskedParam = @SignaureParam
SELECT...WHERE column = @MaskedParam
মাস্কিং এবং অপ্টিমাইজ ইঙ্গিতটির একই প্রভাব রয়েছে (সম্ভবত বিভিন্ন কারণে)। অর্থাত, অপ্টিমাইজারকে পরিসংখ্যান এবং ডেটা বিতরণ ব্যবহার করতে হবে ( দ্রষ্টব্য: এখনও মার্ক স্টোরি-স্মিথের দ্বারা পরীক্ষার অধীনে ) তাদের নিজস্ব যোগ্যতার উপর প্যারামিটারগুলি মূল্যায়ন করতে হবে ? পরিবর্তে, তারা শেষ কল ছিল তার চেয়ে বেশি। অপটিমাইজার পুনরায় সংকলন করতে পারে বা না পারে। এসকিউএল সার্ভার 2005 বিবৃতি স্তরের পুনঃসংশোধন যুক্ত করেছে যাতে এর প্রভাব কম ছিল
এখন, মুখোশযুক্ত / "অজানা" পরামিতিগুলির তুলনায় "স্নিফড" পরামিতিগুলির একটি পরিকল্পনা কেন "চটচটে", আমি নিশ্চিত নই।
আমি এসকিউএল সার্ভার 2000 সাল থেকে সহজ কোড ব্যতীত প্যারামিটার মাস্কিং ব্যবহার করেছি। আমি উল্লেখ করেছি যে এটি আরও জটিল কোড সহ ঘটতে বাধ্য। এবং আমার পুরানো চাকরিতে আমার কিছু প্রতিবেদন রয়েছে যা আমি পরিকল্পনার প্যারামিটার ডিফল্টগুলিতে পরিবর্তন করতে পারি। আমি সমর্থন করি "কার্গো কাল্ট" পদ্ধতির সমর্থন কল চেয়ে সহজ ছিল।
কিছু আড্ডার পরে 2, 12 অক্টোবর 2011 সম্পাদনা করুন
অজানা জন্য প্যারামিটার মাস্কিং এবং অপ্টিমাইজ করার একই প্রভাব রয়েছে যতদূর আমি বলতে পারি
ইঙ্গিতটি মাস্কিংয়ের চেয়ে পরিষ্কার তবে এসকিউএল সার্ভার ২০০৮ এর সাথে যুক্ত হয়েছিল।
সংকলনের সময় প্যারামিটার স্নিফিং ঘটে।
সুপারিশের মাধ্যমে প্রতিটি সম্পাদনকারী একটি নতুন পরিকল্পনা উত্পন্ন করে। এর অর্থ খেলাপিগুলির একটি খারাপ পছন্দ পরিকল্পনাটি প্রভাবিত করবে। আমার শেষ কাজটিতে, আমি কিছু রিপোর্ট কোডের সাহায্যে এটি সহজেই প্রদর্শন করতে পারি: পরামিতিগুলির ডিফল্টগুলি সরবরাহ করা পরামিতি নির্বিশেষে পরিকল্পনাকে বদলে দেয়।
এই এমএস সংযোগ নিবন্ধটি আকর্ষণীয়: সঞ্চিত পদ্ধতির মধ্যে সাবপটিমাল ইনডেক্স ব্যবহার (নীচের এসও উত্তরের একটিতে উল্লিখিত)
- বব বিচেমিনও এটি উল্লেখ করেছেন
অসামান্য বিষয়
স্মিফিং কি এখনও সুপারিশের সাথে প্রযোজ্য? এটি হ'ল, যদি অপটিমাইজার পরিকল্পনাটি বাতিল করতে জানে তবে এর পুনরায় ব্যবহারের লক্ষ্য কী?
কেন স্নিগড পরিকল্পনা "স্টিকি"?
এসও থেকে লিঙ্ক:
WHERE
ধারাটিতে একটি পরিবর্তনশীল উল্লেখ করে ?