আমি কীভাবে বলতে পারি কেন একটি নির্দিষ্ট টেবিলের একটি সন্নিবেশ ধীর?


29

আমি জানি যে এসকিউএল টেবিলের একটি INSERT যে কোনও কারণে ধীর হতে পারে:

  • টেবিলে ইনসার্ট ট্রিগারগুলির উপস্থিতি
  • প্রচুর প্রয়োগকৃত প্রতিবন্ধকতা যাচাই করতে হয় (সাধারণত বিদেশী কীগুলি)
  • টেবিলের মাঝখানে একটি সারি সন্নিবেশ করা হলে ক্লাস্টারড সূচীতে পৃষ্ঠা বিভাজিত হয়
  • সমস্ত সম্পর্কিত নন-ক্লাস্টারযুক্ত সূচি আপডেট করা
  • টেবিলের অন্যান্য ক্রিয়াকলাপ থেকে অবরুদ্ধ
  • দরিদ্র আইও লেখার প্রতিক্রিয়া সময়
  • ... কিছু মিস করলাম?

আমার নির্দিষ্ট ক্ষেত্রে কোনটি দায়ী তা আমি কীভাবে বলতে পারি? পৃষ্ঠা বিভাজন বনাম ক্লাস্টারড ইনডেক্স আপডেটগুলির বনাম অন্য সমস্ত কিছুর প্রভাব কীভাবে পরিমাপ করতে পারি?

আমার কাছে একটি সঞ্চিত সংগ্রহ রয়েছে যা একবারে প্রায় 10,000 সারি সন্নিবেশ করে (একটি টেম্প টেবিল থেকে), যা 10 কে সারিতে 90 সেকেন্ড সময় নেয়। এটি অগ্রহণযোগ্যভাবে ধীর, কারণ এটি অন্যান্য স্পিডগুলি সময়ের বাইরে চলে যায়।

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

এটি একটি এসকিউএল 2000 ডাটাবেস।


আপনি কি আপনার ডেটা ফাইলগুলিতে অটেক্সপ্যান্ড সক্ষম করেছেন? এটি ডিফল্ট কনফিগারেশনে পারফরম্যান্স সমস্যা তৈরি করতে পারে।
ল্যারি কোলম্যান

আমরা কি প্রোফাইলার ব্যবহারের কথা বলছি? msdn.mic Microsoft.com/en-us/library/ms187929.aspx
ছদ্মবেশ

@ ল্যারি: ডেটা ফাইলগুলিতে উল্লেখযোগ্য মুক্ত স্থান রয়েছে, তাই আমি বিশ্বাস করি না যে ডেটা ফাইল বৃদ্ধি একটি সমস্যা is যদিও "চেক করতে জিনিসগুলি" তালিকায় যুক্ত করতে ভাল।
ব্র্যাডিসি

@ ইউজার ২১০: বিবৃতি সমাপ্তির প্রোফাইলিং করা আমাকে দেখায় যে এটি 90 সেকেন্ড নিয়েছে, এটি আমাকে কেন বলে না। অন্য ইভেন্টগুলি না থাকলে আপনার মনে হয় আরও বলার মতো হবে।
ব্র্যাডসি

উত্তর:


10

কিছু বিষয় যা আপনি দেখতে পারেন ...

2000 বা 1000 এর মতো ব্যাচের আকার 10000 থেকে ছোট কিছুতে কমিয়ে দিন (আপনার সারির আকারটি কত বড় তা আপনি বলেননি)।

এফকে লুকআপগুলি কতটা নিচ্ছে তা দেখতে আইও স্ট্যাটাস চালু করার চেষ্টা করুন।

সন্নিবেশ যখন এটি ঘটছে (মাস্টার.ডবো.সিসপ্রসেসস) দ্বারা অপেক্ষার কারণ কী?

এখানে শুরু করা যাক এবং কোথায় আমরা যেতে দেখুন।


2
ব্যাচের আকার কমিয়ে আনতে সহায়তা করে (1000 রেকর্ডগুলি ~ 25 সেকেন্ড সময় নেয়)। এটি সম্ভবত আমাদের বর্তমান "কার্যকরী" হতে পারে। আমি দেখতে পাচ্ছি যে আমি আইও পরিসংখ্যানগুলি নির্ধারণ করতে পারি এবং অপেক্ষা করতে পারি (ক্লায়েন্টের কাছে প্রক্রিয়া করার জন্য একটি ফাইল রয়েছে তখন কাজটি অন-ডিমান্ডে চালিত হয়, তাই আমি কাজটি কখন চালিত হবে তা আমি সর্বদা অনুমান করতে পারি না)।
ব্র্যাডসি

7

ব্র্যাড,

আপনার প্রশ্নের জন্য আপনার অপেক্ষা পরিসংখ্যান পরীক্ষা করা উচিত। এসকিউএল 2000 এর সাহায্যে আপনি ডিবিসিসি এসকিউএলপিআরএফ ("ওয়েটস্ট্যাটস") সিনট্যাক্সটি ব্যবহার করতে পারেন those


6

কোনও ক্যোয়ারীর পারফরম্যান্স বিশ্লেষণ করার সময় আমি যা খুঁজছি তা বলতে পারি। হতে পারে এটি সাহায্য করে।

  • ক্যোয়ারি এক্সিকিউশন প্ল্যান বিশ্লেষণ করুন এবং ইনডেক্স স্ক্যান, টেবিল স্ক্যানগুলি, স্কয়ার ডেটা ধরণের জন্য রূপান্তর_প্রণালী ফাংশনগুলির ব্যবহার, সমান্তরালতা পরীক্ষা করে দেখুন।
  • এক্সিকিউশন সময় দেখতে এবং প্রতিটি সন্নিবেশের জন্য io পড়তে / লেখার জন্য SET STATISTICS IO চালু করুন এবং সময় নির্ধারণ করুন সংস্থাগুলির সাথে ক্যোরি চালান।
  • আপনার সেশন স্পিডের জন্য সিসপ্রসেসগুলি থেকে ওয়েটটাইমটি পরীক্ষা করে দেখুন।
  • প্রোফাইলার চালান এবং মানক টেম্পলেট নির্বাচন করুন। নিম্নলিখিত নির্বাচন করুন: পারফরম্যান্স পরিসংখ্যান (যদি পুনরাবৃত্তি হয় তবে আপনার পরিকল্পনাটি বহুবার সংকলিত হয় - ভাল নয়), আরপিসি: সমাপ্ত, এসকিউএল: ব্যাচ কমপ্লিট এবং এসকিউএল: ব্যাচস্টার্টিং। তাদের কলাম যোগ করুন rowcounts ঠিক ব্যাচে সারির সংখ্যা দেখতে। কেবলমাত্র আপনার ক্যোয়ারী দেখতে ফলাফলগুলি ফিল্টার করুন।
  • উইন্ডোজ পারফোন থেকে শেষ অবধি পেজ লাইফ প্রত্যাশার কাউন্টারটি সংগ্রহ করুন এবং এটি যদি 300 (5 মিনিট) এর নিচে হয় তবে এসকিউএল কম স্মৃতি থাকে। ডিস্কের কাউন্টারগুলিও সংগ্রহ করুন: ডিস্কের সারির দৈর্ঘ্য , ডিস্কের সময় (আপনার ডেটা ফাইল ড্রাইভ), ডিস্কের সময় (আপনার লগ ফাইল ড্রাইভ) ডিস্কগুলির উপর চাপ রয়েছে কিনা তা দেখার জন্য।

5

ব্যবহার করার চেষ্টা করুন:

SET STATISTICS IO ON

এবং

SET STATISTICS PROFILE ON

পরিসংখ্যান আইও

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

পরিসংখ্যান প্রোফাইল

প্রাথমিকভাবে সারণী বিন্যাসে ক্যোয়ারী প্ল্যানটি ফিরিয়ে দেবে, তারপরে আপনি কোয়েরিতে সর্বাধিক অর্থ ব্যয়ের জন্য আইও এবং সিপিইউ কলামগুলি সন্ধান করতে পারেন (এটি কি আপনার টেম্প টেবিলের টেবিল স্ক্যানটি যা আপনার intoোকানোর জন্য এটি করে না? ক্লাস্টার্ড কী, ইত্যাদি ...)

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