SQL সার্ভার - বর্ধমান ডাটাবেস ফাইলের সেরা অভ্যাস


16

আমি স্কাইল সার্ভার ২০০৮ r2-তে ডেটা সংগ্রহকারীর মাধ্যমে ফাইলের বিকাশ দুই সপ্তাহ ধরে পর্যবেক্ষণ করছি। ডেটাবেস প্রায় 35 (এমবি) / দিনে নিয়মিত বৃদ্ধি পাচ্ছে। ডিবি এখনও প্রাথমিকভাবে 2 জিবি আকারে উঠতে পারে নি।

ডিবি ফাইলগুলির অটো বৃদ্ধি 5MB তে সেট করা আছে এবং আমি একটি ভিন্ন পদ্ধতির চেষ্টা করতে চাই, তাই আমি পরামর্শ এবং মন্তব্যগুলি সন্ধান করছি।

এখানে একটি টিউনিং টাস্ক রয়েছে যা প্রতি সপ্তাহে রবিবার রাত 1:30 এ সময় চলে। কাজটি করবে:

  • ডাটাবেস ইন্টিগ্রিটি পরীক্ষা করে দেখুন
  • লগ ফাইল সঙ্কুচিত করুন - (এটি ঠিক আছে কারণ লগিং মোডটি সহজ)
  • সঙ্কুচিত ডাটাবেস
  • সূচি পুনর্গঠন করুন
  • সূচকটি পুনর্নির্মাণ করুন
  • পরিসংখ্যান আপডেট করুন
  • ইতিহাস সাফ করুন

আমি সাপ্তাহিক টিউনিং পরিকল্পনায় আরও দুটি পদক্ষেপ যুক্ত করতে চাই:

  1. যদি ব্যবহৃত স্থানটি একটি নির্দিষ্ট প্রান্তিক বা মোট আকারে পৌঁছায় তবে 500 এমবি করে ডাটাবেস ফাইলটি বাড়ান।
  2. যদি ব্যবহৃত স্থানটি মোট আকারের একটি নির্দিষ্ট প্রান্তে পৌঁছায় তবে 250 এমবি (সঙ্কুচিত হওয়ার পরে) লগ ফাইলটি বাড়ান।

অফলাইন ঘন্টাগুলিতে বৃদ্ধির বোঝা রেখে, আমি ভারী বোঝা চলাকালীন স্বয়ংক্রিয়-বৃদ্ধির ইভেন্টের সংখ্যা হ্রাস করে কর্মক্ষমতা অর্জনের আশা করি।

অটো বর্ধমান ফাইল সম্পর্কিত আমার কাছে দুটি প্রশ্ন রয়েছে।

  • ফাইল বাড়ানোর পদক্ষেপের সেরা স্থানটি বর্তমান পদক্ষেপগুলির আগে বা তার আগে হবে?
  • আমি যদি ALTER DATABASE|MODIFY FILEফাইলটি বাড়ানোর জন্য ব্যবহার করি তবে আমি কীভাবে তা নির্ধারণ করতে পারি SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)?

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

3
@ রেমাস আদর্শ অবস্থায়, আপনি কি বলছেন যে আপনি আপনার ক্যারিয়ার জুড়ে প্রতিটি ডাটাবেসকে পুরোপুরি প্রাক-আকার দিয়েছেন? সবসময় কিছু অনুমান-কাজ জড়িত হতে হবে এবং সমন্বয় করা হবে। আমি সম্মত হব যে বৃদ্ধিকে নিয়ন্ত্রিত করা উচিত এবং দিনে times বার কেবল এটি করা বাদ দেওয়া উচিত।
অ্যারন বারট্রান্ড

3
@ অ্যারোনবার্ট্রান্ড: আমি সরল, হাইপারবোল পরামর্শের পক্ষে । সময়ে আমি এটি আরও ভাল লাঠি শিখেছি। বেশিরভাগ ব্যবহারকারী 'এটি নির্ভর করে' পরিচালনা করতে পারবেন না এবং যাঁরা নিজেরাই বুঝতে পারেন যে কালো এবং সাদা রঙের মধ্যে ধূসর ছায়াছবি রয়েছে ...
রিমাস রুসানু

3
@ ডানঅ্যান্ড্রুজ: অতিরিক্ত বরাদ্দের প্রভাব 'ডাউন স্ট্রিম' হতে পারে।
কোনও দেবতা

2
আমি কেবল শয়তানের উকিল খেলছি। তবে, এইচডিগুলি সস্তা। পুনরায় কনফিগারেশন এবং কর্মক্ষমতা হ্রাসের জন্য উত্পাদনে হারিয়ে যাওয়া সময় ব্যয়বহুল।
ড্যান অ্যান্ড্রুজ

উত্তর:


24

আপনার যতটা সম্ভব অটো-বর্ধনের লক্ষ্য করা উচিত। তাত্ক্ষণিক ফাইলের সূচনা সহ এমনকি দিনে সাত বার উদ্দীপনাজনিত হয়।

সঙ্কুচিত ডাটাবেস করবেন না। কখনো। সঙ্কুচিত, সম্ভবত, তবে কেবলমাত্র একটি অসাধারণ ঘটনার পরে। এটিকে আবার বাড়ার জন্য সঙ্কুচিত করা নিরর্থকতার একটি অনুশীলন এবং প্রকৃতপক্ষে তাকে অটো-টুকরা বলা উচিত।

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

সুতরাং আমার পরামর্শ হবে:

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

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

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


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

+1 এর জন্য অটো-টুকরা বলা উচিত :-) আপনি ইতিমধ্যে এর জন্য একটি সংযোগ সমস্যা চালু করেছেন? :-)
marc_s

10

অটো বৃদ্ধি এমন একটি বিষয় যা সম্ভব হলে আপনার এড়াতে চেষ্টা করা উচিত। সমস্যাটি হ'ল যখন বৃদ্ধিটি ঘটতে পারে তখন আপনার নিয়ন্ত্রণ নেই এবং এটি করার সময় আপনার সিস্টেম মারাত্মক আঘাত হানতে পারে।

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

আমি একটি সাধারণ পর্যবেক্ষণ কাজ স্থাপন করেছি যা স্বয়ংক্রিয়তা বৃদ্ধির আগে ফাইলের আকারটি পূর্বনির্ধারিত সর্বাধিক হিট হলে আমাকে সতর্ক করবে। আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:

SELECT instance_name,
       [Data File(s) Size (KB)],
       [LOG File(s) Size (KB)],
       [Log File(s) Used Size (KB)],
       [Percent Log Used]
       into ##Logsize
FROM
(
   SELECT *
   FROM sys.dm_os_performance_counters
   WHERE counter_name IN
   (
       'Data File(s) Size (KB)',
       'Log File(s) Size (KB)',
       'Log File(s) Used Size (KB)',
       'Percent Log Used'
   )
     AND instance_name = 'database your interested in' 
) AS Src
PIVOT
(
   MAX(cntr_value)
   FOR counter_name IN
   (
       [Data File(s) Size (KB)],
       [LOG File(s) Size (KB)],
       [Log File(s) Used Size (KB)],
       [Percent Log Used]
   )
) AS pvt 
go
declare @logsize int
Select @logsize = [Percent Log Used] from ##Logsize

If @logsize > the maximum percent you want the log to fill too i.e 90
    BEGIN
        --Do your thing here
    END

Drop table ##Logsize

এটি অবশ্যই একটি কাজ হিসাবে নির্ধারিত হতে পারে।


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