এসকিউএল ডাটাবেস শারীরিক ফাইল টুকরা


19

আমি জানি যে সত্যিই তিন ধরণের টুকরো টুকরো আছে যা সম্পর্কে আমাকে ডিবিএ হিসাবে উদ্বিগ্ন হওয়া দরকার:

  1. ইনডেক্স ক্লাস্টার ইনডেক্স (টেবিল) ফ্র্যাগমেন্টেশন সহ SQL এর তথ্যের ফাইল, মধ্যে ফ্র্যাগমেন্টেশন। এটি সনাক্ত করুন ডিবিসিসি শোকন্টিগ (এসকিউএল 2000 এ) বা sys.dm_ db_ সূচক_ শারীরিক_সংখ্যা (2005+ এ)।

  2. এসকিউএল লগ ফাইলগুলির ভিতরে ভিএলএফ বিভাজন । আপনার প্রতিটি এসকিউএল লগ ফাইলগুলিতে কতগুলি ভিএলএফ রয়েছে তা দেখতে ডিবিসিসি লগইনফো চালান।

  3. হার্ড ড্রাইভে ডাটাবেস ফাইলগুলির শারীরিক ফাইলের খণ্ডন। উইন্ডোজে "ডিস্ক ডিফ্রাগেন্টার" ইউটিলিটি ব্যবহার করে এটি নির্ণয় করুন। ( এই দুর্দান্ত ব্লগ পোস্ট দ্বারা অনুপ্রাণিত )

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

আমি জানি আমি যখন শারীরিক খণ্ডন (এবং ভিএলএফ বিভাজন) রোধ করতে পারি যখন ডেটাবেসটি মূলত একটি যুক্তিসঙ্গত প্রত্যাশিত ডেটা ফাইল এবং লগের আকারের পরিকল্পনা করে তৈরি করা হয়েছিল, কারণ এই খণ্ডটি প্রায়শই ঘন ঘন বৃদ্ধি এবং সঙ্কুচিত হতে দেখা যায়, তবে কীভাবে ঠিক করতে হয় সে সম্পর্কে আমার কিছু প্রশ্ন রয়েছে শারীরিক খণ্ডগুলি একবার সনাক্ত করা হলে:

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

  • এসকিউএল পারফরম্যান্সে শারীরিক খণ্ডন কতটা বড় চুক্তি? (আসুন পূর্ববর্তী প্রশ্নের ফলাফল মুলতুবি রেখে, অভ্যন্তরীণ ড্রাইভের অ্যারে ধরে নিই? বা এটি আসলে একই ধরণের সমস্যা (ক্রমবর্ধমান পাঠের পরিবর্তে এলোমেলোভাবে চালিত ড্রাইভ)

  • ড্রাইভটি শারীরিকভাবে খণ্ডিত হয়ে থাকলে ডিফ্র্যাগমেন্টিং (বা পুনর্নির্মাণ) কী সময় নষ্ট করে? অন্যটিকে সম্বোধন করার আগে আমার কি একটি ঠিক করা দরকার?

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

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

অন্য কেউ আসলে ডিফ্র্যাগমেন্টেশন করার জন্য সেরা পদ্ধতির বিষয়ে চিন্তা করতে পারে? অথবা আপনি কতটা সময় আশা করতে চেয়েছিলেন যে এটি একটি বৃহত খণ্ডিত ড্রাইভকে ডিগ্র্যাগ করতে হবে, 500 জিবি বা তাই বলুন? প্রাসঙ্গিক, স্পষ্টতই, কারণ আমার এসকিউএল সার্ভারটি ডাউন হওয়ার সময়!

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

উত্তর:


9

আমি মনে করি এই নিবন্ধটি SAN ড্রাইভের ডিফ্র্যাগমেন্টেশন একটি দুর্দান্ত ওভারভিউ দেয়

http://www.las-solanas.com/storage_virtualization/san_volume_defragmentation.php

বেসিক পয়েন্টগুলি হ'ল এসএএন স্টোরেজে ডিফ্র্যাগমেন্টিংয়ের প্রস্তাব দেওয়া হয় না কারণ LUN উপস্থাপনের সময় SAN দ্বারা লোকেশনটি ভার্চুয়ালাইজ করা হলে ডিস্কের ব্লকের শারীরিক অবস্থানের সাথে সম্পর্ক স্থাপন করা কঠিন।

আপনি যদি RAW ডিভাইস ম্যাপিংগুলি ব্যবহার করছিলেন বা আপনি যে RAID সেটের সাথে কাজ করছেন সেটিতে সরাসরি অ্যাক্সেস পেয়ে থাকেন তবে আমি অবনমিতকরণের ইতিবাচক প্রভাব ফেলতে দেখতে পেলাম, তবে যদি আপনি একটি ভাগ করা RAID- কে "ভার্চুয়াল" LUN প্রদান করেন তবে 5 সেট, না।


দুর্দান্ত নিবন্ধ। SAN ড্রাইভের বিষয়ে ডান পয়েন্ট।
ব্র্যাডিসি

7

এই প্রশ্নটির একাধিক অংশ এবং উত্তর:

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

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

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

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

আশাকরি এটা সাহায্য করবে!


আহা, তাহলে কি অভ্যন্তরীণ সূচক বিভাজনগুলি যথাযথ সূচক সীমার পরিবর্তে পূর্ণ স্ক্যানের পক্ষে, অনুকূলকরণের আচরণকে পরিবর্তন করে?
ব্র্যাডিসি

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

3

কোনও প্রোডাকশন এসকিউএল বক্সে ফিজিক্যাল ফাইল খণ্ড স্থির করার সর্বোত্তম উপায় কী?

আমি আমার ডাটাবেস ফাইলগুলিতে SYSINTERNALS 'কনটিগ চালাচ্ছি।

Http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx দেখুন


বেশ মজার তো. আমি ধরে নিয়েছি যেহেতু এটি উইন্ডোজ ডিফ্র্যাগ এপিআই ব্যবহার করে, এসকিউএল পরিষেবাগুলি বন্ধ করে দিতে হবে? অথবা সার্ভার / ডাটাবেস অনলাইনে থাকাকালীন এটি কী চলবে?
ব্র্যাডিসি

আমি এটি অনলাইনে এমএসএসকিউএল সার্ভার ডাটাবেসে সফলভাবে ব্যবহার করেছি। তবে তর্কযোগ্যভাবে সেগুলি ছিল লো ট্রাফিক এবং ছোট ডাটাবেসগুলি (10 জিবি এর চেয়ে কম)
ভিনসেন্ট বাক

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

2

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


1

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

যদি আপনার সূচকগুলি ডিফ্র্যাগমেন্টযুক্ত হয় এবং পরিসংখ্যানগুলি আপডেট হয় (খুব গুরুত্বপূর্ণ) এবং আপনি এখনও I / O কে বাধা হিসাবে দেখেন তবে আপনি শারীরিক খণ্ডন ব্যতীত অন্য কিছুতে ভুগছেন। আপনি কি 80% এরও বেশি ড্রাইভ ব্যবহার করেছেন? আপনার কি যথেষ্ট ড্রাইভ আছে? আপনার প্রশ্নগুলি যথেষ্ট অপ্টিমাইজড? আপনি কি অনেকগুলি টেবিল স্ক্যান করছেন বা ক্লাস্টারড ইনডেক্সের অনুসারে প্রচুর সূচকের চেয়ে আরও খারাপ কাজ করছেন? আপনার ক্যোয়ারির সাথে কী চলছে তা জানতে ক্যোয়ারী পরিকল্পনাটি দেখুন এবং "সেট স্ট্যাটাসেটস আইও অন" ব্যবহার করুন। (যৌক্তিক বা শারীরিক পাঠের একটি উচ্চ সংখ্যার সন্ধান করুন)

আমি সম্পূর্ণ ভুল হলে দয়া করে আমাকে জানান।

/ হকান উইন্টার


না, আপনি ভুল নন তবে সাপ্তাহিক বিশ্লেষণ কাজের সময় সঞ্চালিত 150,000+ স্বতন্ত্র এসকিউএল স্টেটমেন্টগুলিতে ডুব দেওয়া শুরু করার চেয়ে কিছু সার্ভার-ওয়াইড উন্নতি করার চেষ্টা করা (যদি সম্ভব হয়) কিছুটা আকর্ষণীয় হয় (অতিরঞ্জিত হয় না an সম্ভবত একটি
নিম্নরেখা

আপনার যদি এই ধরণের পরিস্থিতি থাকে তবে আমি ভারিটাস আই 3 কে আপনার পরিবেশটি বিশ্লেষণ করার জন্য সুপারিশ করব যাতে আপনি কোন বাধা এবং কী কারণে বাধা সৃষ্টি করছেন see ভেরিটাস আই 3 সমস্ত বিবৃতি এবং কতবার তাদের ডাকা হয় এবং কোন ব্যয়ে ট্র্যাক করে। এটি একটি দুর্দান্ত সফ্টওয়্যার।
হাকান উইনথার

1

আপনার সূচীগুলি আপনার অ্যাপ্লিকেশনের জন্য পর্যাপ্ত পরিমাণে অনুকূলিত হয়নি এবং আপনার ডাটাবেসটি অনুকূল করতে ভেরিটাস আই 3 নেই তবে আপনি অনুপস্থিত সূচকগুলি খুঁজে পেতে এই জাতীয় বিবৃতি ব্যবহার করতে পারেন:

       SELECT
      mid.statement,
      mid.equality_columns,
      mid.inequality_columns,
      mid.included_columns,
      migs.user_seeks,
      migs.user_scans,
      migs.last_user_seek,
      migs.avg_user_impact,
      user_scans,
      avg_total_user_cost,
      avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) AS [weight]--, migs.*--, mid.*
   FROM
      sys.dm_db_missing_index_group_stats AS migs
      INNER JOIN sys.dm_db_missing_index_groups AS mig
         ON (migs.group_handle = mig.index_group_handle)
      INNER JOIN sys.dm_db_missing_index_details AS mid
         ON (mig.index_handle = mid.index_handle)
   ORDER BY
      avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) DESC ;

বা সূচকগুলি খুঁজে পেতে এর মতো একটি বিবৃতি যা নির্বাচিত বিবৃতিগুলিতে ব্যবহৃত হয় না এবং আপডেট / sertোকানো কার্যকারিতা হ্রাস করে:

    CREATE PROCEDURE [ADMIN].[spIndexCostBenefit]
    @dbname [nvarchar](75)
WITH EXECUTE AS CALLER
AS
--set @dbname='Chess'
declare @dbid nvarchar(5)
declare @sql nvarchar(2000)
select @dbid = convert(nvarchar(5),db_id(@dbname))

set @sql=N'select ''object'' = t.name,i.name
        ,''user reads'' = iu.user_seeks + iu.user_scans + iu.user_lookups
        ,''system reads'' = iu.system_seeks + iu.system_scans + iu.system_lookups
        ,''user writes'' = iu.user_updates
        ,''system writes'' = iu.system_updates
from '+ @dbname + '.sys.dm_db_index_usage_stats iu
,' + @dbname + '.sys.indexes i
,' + @dbname + '.sys.tables t
where 
    iu.database_id = ' + @dbid + '
and iu.index_id=i.index_id
and iu.object_id=i.object_id
and iu.object_id=t.object_id
AND (iu.user_seeks + iu.user_scans + iu.user_lookups)<iu.user_updates
order by ''user reads'' desc'

exec sp_executesql @sql

set @sql=N'SELECT
   ''object'' = t.name,
   o.index_id,
   ''usage_reads'' = user_seeks + user_scans + user_lookups,
   ''operational_reads'' = range_scan_count + singleton_lookup_count,
   range_scan_count,
   singleton_lookup_count,
   ''usage writes'' = user_updates,
   ''operational_leaf_writes'' = leaf_insert_count + leaf_update_count + leaf_delete_count,
   leaf_insert_count,
   leaf_update_count,
   leaf_delete_count,
   ''operational_leaf_page_splits'' = leaf_allocation_count,
   ''operational_nonleaf_writes'' = nonleaf_insert_count + nonleaf_update_count + nonleaf_delete_count,
   ''operational_nonleaf_page_splits'' = nonleaf_allocation_count
FROM
   ' + @dbname + '.sys.dm_db_index_operational_stats(' + @dbid + ', NULL, NULL, NULL) o,
   ' + @dbname + '.sys.dm_db_index_usage_stats u,
    ' + @dbname + '.sys.tables t
WHERE
   u.object_id = o.object_id
   AND u.index_id = o.index_id
    and u.object_id=t.object_id
ORDER BY
   operational_reads DESC,
   operational_leaf_writes,
   operational_nonleaf_writes'

exec sp_executesql @sql

GO

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

(আমি জানি, এই পোস্টটি কিছুটা বিষয়বস্তু, তবে আমি ভেবেছিলাম যে আপনি আগ্রহী হতে পারেন কারণ এটি সূচীকরণ কৌশলটি করতে হবে)

/ হকান উইন্টার


দুর্দান্ত স্ক্রিপ্টস, আমার কিছু খুব মিল রয়েছে। দুর্ভাগ্যক্রমে, আমরা এখনও 40% এসকিউএল 2000 (প্রশ্নে থাকা সার্ভার সহ) রয়েছি, যার এই "অনুপস্থিত সূচী" ডিএমভিগুলির সমতুল্য নেই।
ব্র্যাডিসি

আমি দেখতে পাচ্ছি, তারপরে আমি আপনাকে ভেরিটাস আই 3 তে একবার দেখার পরামর্শ দিই। এটি একটি দুর্দান্ত পণ্য যা আপনি আপনার ডাটাবেসগুলি টিউন করতে ব্যবহার করতে পারেন তবে এটি কোনও সস্তা সফ্টওয়্যার নয়।
হাকান উইনথার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.