আপনি কীভাবে মাইক্রোসফ্ট এসকিউএল সার্ভারের মধ্যে থেকে সমস্ত পুরানো ক্যোয়ারী পরিকল্পনা সাফ করবেন?


12

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

আমি বিশ্বাস করি আমাদের কাছে একটি ক্যোয়ারী পরিকল্পনা সমস্যা আছে। আমরা প্রতিদিন চালিত প্রথম প্রতিবেদনটি খুব দ্রুত 7 মিনিট চলে। প্রথম প্রতিবেদনের পরে আমরা যে কোনও প্রতিবেদন চালাতে এক ঘন্টা সময় নেয়।

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

এসকিউএল সার্ভারের মেমরিতে বর্তমানে রয়েছে এমন সমস্ত ক্যোয়ারী প্ল্যানগুলি সাফ করার কোনও উপায় আছে কি?

30 বা ততোধিক ব্যবহারকারীরা একই সার্ভারে থাকা অন্য ডেটাবেজে নির্ভর করে না করে আমি কীভাবে এটি করতে পারি?


উত্তর:


7

আমার আগের উত্তরের জন্য ক্ষমা চাই।

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

২) আপনাকে এমন একটি পরিকল্পনা গাইড তৈরি করতে হবে যা প্রয়োগের পরিকল্পনার জন্য বাধ্যতামূলক করতে প্রতিটি ধরণের প্রশ্নের (প্রতিটি সঞ্চিত প্রক্রিয়া অনুরোধের ধরণের) জন্য একটি ইউএস প্ল্যান কোয়েরি ইঙ্গিত ব্যবহার করে।

কার্যকর করতে পারে এমন পরিকল্পনা সম্পর্কে নিবন্ধটি এখানে সহায়তা করতে পারে।


আমি প্রস্তাবটি ব্যবহার করে সম্মত হলাম, আমি এটি তৈরি করেছি এমন সিস্টেমে করেছিলাম। তবে স্কিল উত্সটিতে আমার অ্যাক্সেস নেই ... এটি কোনও অ্যাপ্লিকেশন থেকেই চলে।
মাইকেল রিলে - এ কেএ গুনি

@ কেপ কড গুনি এক্ষেত্রে ডিবিসিসি ফ্লুশপ্রোসিডবি চেষ্টা করুন: সম্পূর্ণ এসকিউএল সার্ভার নয়, একটি এসকিউএল সার্ভারে একটি নির্দিষ্ট ডাটাবেসের জন্য সঞ্চিত পদ্ধতি ক্যাশেটি সাফ করার জন্য ব্যবহৃত হয়। পূর্ববর্তী সঞ্চিত পদ্ধতি পরিকল্পনাগুলি পরীক্ষার ফলাফলগুলিকে নেতিবাচকভাবে প্রভাবিত করবে না তা নিশ্চিত করার জন্য আপনি পরীক্ষার আগে এই কমান্ডটি ব্যবহার করতে চাইতে পারেন। উদাহরণ: ডিক্লেয়ার @intDBID পূর্ণসংখ্যা সেট @intDBID = (dbid master.dbo.sysdatabases থেকে নির্বাচন করুন যেখানে নাম = 'database_name') DBCC FLUSHPROCINDB (@intDBID)
garik

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

13

আপনি এখানে দুটি প্রশ্ন জিজ্ঞাসা করেছেন। প্রথমত, আপনি জানতে চান যে আপনি এসকিউএলের একটি উদাহরণের জন্য মেমরিতে সঞ্চিত সমস্ত পরিকল্পনা সরাতে পারেন কিনা। যা ম্যাট এম এর পরামর্শ অনুসারে ডিবিসিসি ফ্রিপ্রোসচেকের সাথে সম্পন্ন হয়েছে।

আপনি যে দ্বিতীয় প্রশ্নটি জিজ্ঞাসা করেছিলেন তা হ'ল "আমি 30 বা ততোধিক কোনও ব্যবহারকারীকে একই সার্ভারের অন্যান্য ডাটাবেসের উপর নির্ভর করে না করে কীভাবে এটি করতে পারি?" সংক্ষিপ্ত উত্তরটি "আপনি পারবেন না"। আপনি যদি মেমোরির পরিকল্পনার উপর নির্ভর করে এমন অন্যান্য ব্যবহারকারীদের তুলনায় সমস্ত পরিকল্পনা সরিয়ে ফেলেন তবে সম্ভবত কার্য সম্পাদন হিট পড়বে।

এর জন্য কার্যবিধির জন্য কিছু ম্যানুয়াল হস্তক্ষেপ প্রয়োজন। আপনি প্ল্যান_হ্যান্ডল সরবরাহ করে নির্দিষ্ট পরিকল্পনা সরাতে আপনি ডিবিসিসি ফ্রিপ্রোসচাচি ব্যবহার করতে পারেন।

আপনি উপরে যা বর্ণনা করছেন তা থেকে এটি কোনও পরিকল্পনার সমস্যার মতো শোনায় তবে আমি নিশ্চিত নই যে পরিকল্পনাগুলি অপসারণ করা উত্তর। পরিকল্পনাগুলি সরানোর বিষয়ে চিন্তা করার আগে আমি আপনাকে প্যারামিটার স্নিফিংয়ের দিকে নির্দেশ করব:

http://blogs.msdn.com/b/conor_cunningham_msft/archive/2010/08/11/conor-vs-misbehaving-parameterized-queries-optimize-for-hints.aspx

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


ডিবিসিসি ফ্রিপ্রসাগাছ সমস্যাটি সমাধান করেনি। আমি ক্রিয়াকলাপ এবং ইভেন্টগুলি পর্যবেক্ষণ করি। 0 টি শারীরিক আই / ও রয়েছে। এটি এই অ্যাপ্লিকেশনটিতে ঝুলন্ত বলে মনে হচ্ছে:। নেট স্কেল ক্লায়েন্ট ডেটা সরবরাহকারী। অপেক্ষার প্রকারটি সিএক্সপ্যাককেট।
মাইকেল রিলে - এ কেএ গুনি

CXPACKET বোঝায় যে আপনার ক্যোয়ারী সমান্তরালে চলেছে। ক্যোয়ারির জন্য কতগুলি থ্রেড চলছে তা আপনি সনাক্ত করতে পারেন এবং তাদের অপেক্ষারত পরীক্ষা করতে পারেন? আপনি অ্যাডাম মাচানিকের বিনামূল্যে সরঞ্জাম WhoIsActive sqlblog.com/files/folders/re कृपया/ entry29675.aspx ব্যবহার করতে চাইতে পারেন ।
এসকিউএলরকস্টার

7

ডিবিসিসি নিখরচায়

এই কমান্ডটি ব্যবহার করে, আপনি সম্পূর্ণ পদ্ধতিটি ক্যাশে একটি একক কমান্ডে সাফ করতে পারেন। এই কমান্ডটি ব্যবহার করার আগে অবশ্যই ডকুমেন্টেশনটি পড়ুন। মন্তব্যগুলি বিভাগটি কয়েকবার পড়ুন।

প্রক্রিয়া ক্যাশে সাফ করার ফলে সঞ্চিত প্রক্রিয়া ক্যাশেগুলি পরবর্তী ব্যবহারের জন্য পুনরায় সংবিধান তৈরি করতে পারে। এটি পারফরম্যান্সকে প্রভাবিত করতে পারে। সাবধানে ব্যবহার করুন!

ঔজ্বল্যহীন


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