সংরক্ষণাগার কাজের জন্য একটি ডেটাবেস defrag / কমপ্যাক্ট সেরা উপায়


9

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

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

কয়েকটি সম্ভাবনা যা আমি ভাবতে পারি:

  1. পুনর্নির্মাণ / পুনরায় সংগঠিত সূচকগুলি, ডিবিসিসি শ্রিনকিফিল (ঠিক আছে, এটি কোনও বোধগম্য বিকল্প নয়, যেহেতু ডিবিসিসি শ্রিনফিল ফাইলটি স্পর্শ করে তার থেকে প্রসারণ করবে, তবে আমি এটি সম্পূর্ণতার জন্য অন্তর্ভুক্ত করছি))
  2. অটো-স্ট্যাটাস বন্ধ করে একটি নতুন ডাটাবেস তৈরি করুন। উত্স ডাটাবেস থেকে সমস্ত টেবিল স্ক্রিপ্ট এবং পুনরায় তৈরি করুন। ক্লাস্টার-কি ক্রমে নতুন ডাটাবেসে ডেটা রফতানি / আমদানি করতে বিসিপি ব্যবহার করুন। স্ক্রিপ্ট এবং সমস্ত সূচি পুনরায় তৈরি করুন। সম্পূর্ণ স্ক্যান সহ সমস্ত পরিসংখ্যান পুনরায় গণনা করুন।
  3. অটো-স্ট্যাটাস বন্ধ করে একটি নতুন ডাটাবেস তৈরি করুন। উত্স ডাটাবেস থেকে সমস্ত টেবিল স্ক্রিপ্ট এবং পুনরায় তৈরি করুন। নতুন ডাটাবেসে ডেটা স্থানান্তর করতে এসএসআইএস বা টি-এসকিউএল ব্যবহার করুন। স্ক্রিপ্ট এবং সমস্ত সূচি পুনরায় তৈরি করুন। সম্পূর্ণ স্ক্যান সহ সমস্ত পরিসংখ্যান পুনরায় গণনা করুন।

প্রতিটি ক্ষেত্রে চূড়ান্ত পদক্ষেপটি কেবলমাত্র পঠন মোডে ডাটাবেস সেট করে।

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

সম্পাদনা:

আমার উল্লেখ করা উচিত যে প্রায় 75% ডেটা ইমেজ (LOB) কলামগুলিতে সঞ্চিত মনে হয়।


3
আপনি (বা অ্যাপ্লিকেশন) টেবিলগুলি শারীরিকভাবে অন্য কোনও ফাইলগোষ্ঠীতে শেষ হলে PRIMARYকী যত্নশীল হন ?
জন সেগেল

@ জোনসিগেল আমি মনে করি না এবং আসলে এটি একটি দুর্দান্ত ধারণা, কারণ এটি আমাকে একটি টেমপ্লেট ডাটাবেস তৈরি করার সমস্যা এবং সমস্ত ডেটা সরিয়ে নেওয়ার সমস্যাটি বাঁচাতে পারে।
db2

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

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

এটি কেবল একটি চিন্তাভাবনা, তবে কেন একটি নতুন ফাইলগ্রুপ তৈরি করবেন না, একটি ফাইল যুক্ত করুন, যুক্তিসঙ্গত প্রবৃদ্ধি নির্ধারণ করুন (500 এমবি বলুন) এবং তারপরে আপনার টেবিলগুলি নতুন ফাইলগ্রুপে পুনর্নির্মাণ করুন। তারপরে প্রায় কোনও কিছুইতেই প্রাথমিক ফাইলটি সঙ্কুচিত করুন। আপনি সিস্টেমের টেবিলগুলিতে টুকরো টুকরো টিকবে না।
নিক

উত্তর:


1

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

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

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

পার্শ্ব নোটে, কেবল আপনি আপনার LOBS এর জন্য সর্বশেষ ডেটাটাইপগুলি ব্যবহার করছেন তা পরীক্ষা করে দেখুন। উদাহরণস্বরূপ এনভেরচার (সর্বোচ্চ) বা বর্ণচর (সর্বাধিক) পরিবর্তে নেক্সট বা পাঠ্যের পরিবর্তে, চিত্রের পরিবর্তে ভের্বাইনারি (সর্বাধিক)?


দুর্ভাগ্যক্রমে এটি বেশিরভাগ পাঠ্য এবং চিত্র ব্যবহার করে। এটি একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন, সুতরাং আমার এটি পরিবর্তন করার ক্ষমতা নেই।
db2

@ 8k হলে এসকিউএল সার্ভারের সাথে সারি তথ্য সঞ্চিত করে অ্যাপ্লিকেশনটির কাছে সত্যই স্বচ্ছ হয়ে যায় transparent যদি বিক্রেতা বলে যে এটি অসমর্থিত, আমি তাদের জিজ্ঞাসা করব কেন তারা এখনও এসকিউএল সার্ভার 2005 এ মূলত অবহিত ডেটাটাইপগুলি ব্যবহার করছে!
গুডস

আমি সম্পূর্ণরূপে নিশ্চিত হতে পারি না যে অ্যাপ্লিকেশনটি WRITETEXT এর মতো পাঠ্য / চিত্র-নির্দিষ্ট স্টাফ করে না যা ডেটা প্রকার পরিবর্তনের পরে ব্যর্থ হবে। তবে মূল পয়েন্টে ফিরে এসে দেখে মনে হচ্ছে ক্লাস্টারড ইনডেক্স পুনরুদ্ধার করা আসলে এটির সাথে এলওবি ডেটা সরবে না।
db2

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

বুঝতে পেরেছি, খুব কমপক্ষে উপযুক্ত পুনর্নির্মাণ স্ক্রিপ্টগুলি উত্পন্ন করার জন্য এটি একটি কার্যকর উপায় হতে পারে।
db2

0

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


আমি সন্দেহ করি যে ফাইলপ্রবাহ এই ক্ষেত্রে ভাল স্কেল করতে পারে না। আমরা ১ database টি ডাটাবেস জুড়ে ১৪ মিলিয়নেরও বেশি সারি পেয়েছি এবং আমরা প্রতিদিন প্রায় 15,000 বার্তা পাচ্ছি। বার্তা সংস্থাগুলির একটি উল্লেখযোগ্য অংশ 4 কেবি এর নীচে রয়েছে, সুতরাং এনটিএফএস ক্লাস্টার বর্জ্য সম্ভবত নির্মম হবে (এবং এটি এমনকি আমরা যদি 64 কেবি এর চেয়ে কম ব্লকের আকারের সাথে একটি নতুন ডিস্ক ভলিউম যুক্ত করি)।
db2

সেক্ষেত্রে আপনি কি ডেটাটাইপকে এনভারচার (সর্বাধিক) মতো কিছুতে রূপান্তর করতে পারেন এবং এই বৃহত অবজেক্টগুলির জন্য আলাদা ফাইলগ্রুপ নির্দিষ্ট করতে TEXTIMAGE_ON ধারাটি ব্যবহার করতে পারেন? এটি আপনাকে সারিবদ্ধভাবে ডেটা সঞ্চয় করতে দেয় এবং সংরক্ষণাগারটি পরিচালনা করতে আপনার নিজস্ব প্রক্রিয়া তৈরি করতে দেয়।
লিয়াম কনফ্রে

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