এসকিউএল সার্ভার কোয়েরি স্টোর - একটি 'অ্যাড-হক' কোয়েরি বিবেচনা করা হয়?


10

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

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


এই প্রশ্নটি দেখুন। stackoverflow.com/questions/2460954/what-is-ad-hoc-query
SqlWorldWide

@ এসকিএল ওয়ার্ল্ডওয়াইড - আমি আমার প্রশ্নটির উচ্চারণ করেছি। আমি সাধারণভাবে বলতে চাই না আমার অর্থ এটি কোয়েরি স্টোরের সাথে সম্পর্কিত।
র্যান্ডি মাইন্ডার

কীভাবে আপনার ক্যোয়ারী স্টোরটি কনফিগার করা আছে - সমস্ত বা অটো?
কিন শাহ

@ কিন - এটি অটো
র্যান্ডি মাইন্ডার

উত্তর:


8

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

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

অ্যাডহক কর্মপ্রবাহের জন্য অনুকূলিতকরণ সম্পর্কিত নিবন্ধটি বলেছে,

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

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

ক্যোয়ারী স্টোরের সেরা অনুশীলনের উপর নিবন্ধটিও এর সাথে সামঞ্জস্য করে,

Sys.query_store_query এ মোট প্রবেশের সংখ্যার সাথে স্বতন্ত্র ক্যোয়ারী_হ্যাশ মানগুলির সংখ্যা তুলনা করুন। অনুপাতটি যদি 1 এর কাছাকাছি হয় তবে আপনার অ্যাডহক কাজের চাপটি বিভিন্ন ক্যোয়ারী উত্পন্ন করে।

এটি অবশ্যই, এমন প্রশ্নের জন্য যা ইতিমধ্যে সঞ্চিত প্রক্রিয়া, প্যারামিটারাইজড ইত্যাদি হিসাবে ব্যবহৃত হয় না কারণ তারা ব্যাট থেকে ডানদিকে সঠিকভাবে সনাক্ত এবং চিকিত্সা করতে পারে।

সুতরাং এই সমস্ত কিছুর উপর ভিত্তি করে আমরা বলতে পারি যে কোনও প্রশ্নের জন্য অ্যাডহক হিসাবে বিবেচনা করা হয় যদি:

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

4

অ্যাড-হক প্রশ্নগুলির জন্য, ডিএসভিতে অবজেক্ট_আইডি কলাম sys.query_store_query0 হবে, যেমন সিস.উইকি_স্টোর_কোয়ারি ডকুমেন্টেশনে বলা হয়েছে :

অবজেক্ট_আইডি :

ডাটাবেস অবজেক্টের আইডি যে ক্যোয়ারির অংশ (সঞ্চিত প্রক্রিয়া, ট্রিগার, সিএলআর ইউডিএফ / ইউডিএজি, ইত্যাদি)। 0 যদি কোনও ডাটাবেস অবজেক্টের (অ্যাড-হক কোয়েরি) অংশ হিসাবে কোয়েরি কার্যকর করা হয় না।

আপনি এই মানটির উপর ভিত্তি করে অ্যাড-হক প্রশ্নগুলি সনাক্ত করতে পারেন, যদিও এটি " অ্যাড-হকের প্রশ্নের সংজ্ঞা এটি " হিসাবে স্পষ্টভাবে বলা হয়নি । :)


0

অ্যাড-হক শব্দটি এমন প্রশ্নের সাথে সম্পর্কিত হয় যা কেবল একবার কার্যকর করা হয়েছিল। এটি "অ্যাড-হক ওয়ার্কলোডের জন্য অনুকূলিতকরণ" ডাটাবেস সেটিংয়ের জন্য ব্যবহৃত সংজ্ঞাটির সাথে সামঞ্জস্যপূর্ণ।

আপনি যে লিঙ্কটি উল্লেখ করেছেন অ্যাড-হক প্রশ্নগুলি মুছে ফেলার বিষয়ে এই নির্দিষ্ট সংজ্ঞাটি অন্তর্ভুক্ত করে "অ্যাড-হক জিজ্ঞাসাগুলি মুছুন: এটি কেবলমাত্র একবারেই কার্যকর করা হয়েছিল এবং 24 ঘন্টােরও বেশি পুরানো এই প্রশ্নগুলি মুছে দেয়" "


0

ডকস.মাইক্রোসফট.কম এ sys.dm_exec_cached_plans dmv এর objtypeকলাম থেকে অ্যাড-হক ।

অ্যাডহক: অ্যাডহক কোয়েরি। রিমোট পদ্ধতি কলের পরিবর্তে ওএসকিএল বা এসকিএলসিএমডি ব্যবহার করে ভাষার ইভেন্ট হিসাবে লেনদেন-এসকিউএল জমা দেওয়া হয়েছে।

এই কলামটির একটি ব্যবহার হ'ল একাধিক পরিকল্পনার ক্যোয়ারির ক্ষেত্রে একাধিক পরিকল্পনা হয়েছে কিনা তা দেখার জন্য Adhoc

    SELECT  DISTINCT 
        QCP.objtype
        ,MultipleQ.PlanCount
        ,qStat.query_hash
        ,sText.text AS QueryText
FROM ( 
        SELECT query_hash,
               COUNT(query_hash) AS PlanCount
        FROM sys.dm_exec_query_stats
        GROUP BY query_hash
    ) AS MultipleQ
INNER JOIN sys.dm_exec_query_stats qStat ON MultipleQ.query_hash = qStat.query_hash
INNER JOIN sys.dm_exec_cached_plans  QCP
    ON QCP.plan_handle = qStat.plan_handle
CROSS APPLY sys.dm_exec_sql_text(qStat.sql_handle) AS sText
CROSS APPLY sys.dm_exec_query_plan(qStat.plan_handle) AS qp
WHERE PlanCount > 1
ORDER BY MultipleQ.PlanCount DESC

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