উত্তর:
সংকুচিত যদিও এখানে উল্লিখিত কারণে সত্যিই বিপজ্জনক। জিম্বোর উত্তর এবং জনের উত্তরগুলির মধ্যে একটি সুখী মাধ্যম রয়েছে ... আপনি আপনার ডাটাবেস সঙ্কুচিত করতে চান কিনা তা আপনার সর্বদা গুরুত্ব সহকারে বিবেচনা করা উচিত।
একটি আদর্শ বিশ্বে - আপনি আপনার ডিবি তৈরি করতে প্রচুর পরিমাণে মুক্ত স্থান তৈরি করতে চান। আমি এই "ডান সাইজিং" আপনার ডাটাবেস কল। আপনি এই নিখরচায় জায়গাটি সেখানে থাকতে দেবেন এবং এটিকে ফিরে দেওয়ার চেষ্টা করবেন না এবং আপনার মোট আকারটি আপনার ব্যবহৃত আকারে ঠিক রাখবেন .. কেন? কারণ আপনার ডেটাবেসটি শেষ পর্যন্ত আবার বেড়ে উঠবে .. তারপরে আপনি আবার সঙ্কুচিত হবেন .. এবং আপনি বৃদ্ধির পরে অকেজো সঙ্কুচিত এই ভয়ঙ্কর প্যাটার্নে আটকে যাবেন - এবং পুরো সময়টি যেমন কয়েকজন উল্লেখ করেছেন, আপনি হবেন আপনার সূচী খণ্ডন বৃদ্ধি করে।
আমি এই সম্পর্কে ব্লগ করেছি যেখানে আমি লোকদের " যে সঙ্কুচিত বোতামটি স্পর্শ করবেন না! " করার পরামর্শ দিয়েছিলাম তবে কখনও কখনও ... কখনও কখনও আপনার প্রয়োজন হয়। যদি আপনার কাছে একটি বৃহত ডাটাবেস থাকে, কেবলমাত্র উল্লেখযোগ্য স্থানটি মুক্ত করে নিন এবং এটির মধ্যে আর কখনও ফিরে আসার প্রত্যাশা করবেন না - তবে ঠিক ততক্ষণ পুনর্নির্মাণের মাধ্যমে আপনার সূচি খণ্ডনের যত্ন নিতে পারে ততক্ষণ আপনি সংক্ষিপ্ত হওয়াটিকে ওয়ান টাইম ক্রিয়াকলাপ হিসাবে বিবেচনা করা ঠিক হবে তাদের। সঙ্কুচিত অপারেশনটি সময় সাশ্রয়ী হতে পারে তাই আপনি এটি এমন সময়ের জন্য পরিকল্পনা করতে চান যেখানে আপনি সঙ্কুচিত দৌড়ের এই মূল্যটি দিতে পারেন। একটি খালি ডিবি তৈরি করার এবং এর মধ্যে ডেটা অনুলিপি করার পদ্ধতির কাজ করে - তবে এটি বড় ডেটাবেস এবং প্রচুর ডেটা দিয়ে খুব কঠিন হয়ে উঠতে পারে।
যদি আপনি ভবিষ্যতে সাধারণ ব্যবহার এবং বৃদ্ধির নিদর্শনগুলির মাধ্যমে সেই স্থানটি ডিবিতে ফিরে যুক্ত করার পরিকল্পনা করেন তবে আপনি কেবল স্থানটি ছেড়ে যেতে চাইতে পারেন।
এছাড়াও
আপনি বলেছিলেন যে আপনি আপনার লেনদেনের লগ "সাফ" করেছেন। আপনি কীভাবে এটি করেছিলেন তা জানতে আগ্রহী হব তবে আপনি যে পোস্টটি ভাগ করেছেন তা এবং সিরিজের অন্যান্য অংশগুলি পড়তে আপনি লেনদেন লগ পরিচালনার জন্য কিছু টিপস দেখতে পাবেন। তবে সংক্ষেপে - আপনি যদি পুরো পুনরুদ্ধার মোডে থাকেন তবে লগটিকে পুনরায় ব্যবহার করার জন্য আপনার নিয়মিত লগ ব্যাকআপ নেওয়া উচিত। অন্যথায় - পূর্ণ মোডে থাকাকালীন কোনও লগ ব্যাকআপ না - লগ ফাইলটি ক্রমবর্ধমান এবং বর্ধমান এবং বর্ধমান রাখে এবং আপনি যা করেছেন তা সবসময় সংরক্ষণ করে কারণ আপনি এসকিউএলকে বলেছিলেন যে আপনি ক্র্যাশ পুনরুদ্ধারের জন্য সেই লগটি বজায় রাখতে চান না তবে একটি রাখতে চান পুনরুদ্ধারের লেনদেনগুলি পুনরায় খেলতে / পুনরুদ্ধারের উদ্দেশ্যে নির্দিষ্ট সময়ে পুনরুদ্ধার করতে লেনদেন পূর্বাবস্থায়িত করতে এটির ম্যানুয়াল ব্যাকআপ ... আপনি যদি সহজ হন এবং লগটি অত্যধিকভাবে বাড়তে দেখেন তবে,BEGIN TRAN ... do work.... COMMIT TRAN
অথবা আপনি সবেমাত্র একটি বড় DELETE
বিবৃতি জারি করেছেন এবং একটি অন্তর্নিহিত লেনদেনে ডেটার পুরো মেস মুছে ফেলেছেন কিনা ।)
আমি ধরে নিচ্ছি যে আপনি নিজের ফাইল সিস্টেমে এই মুক্ত স্থানটি সন্ধান করছেন। যদি আপনি এটি এসকিউএল এর মধ্যে এবং আপনার যে বৃহত ফাইলের মধ্যে এটি সন্ধান করে থাকেন - এটি এমন হতে পারে যে আপনি অপারেশনটির সাথে সাথে তত্ক্ষণাত্ যদি সন্ধান করেন তবে আপনি ভুত ক্লিনআপটি সম্পূর্ণ করার জন্য অপেক্ষা করছেন। পল রান্ডাল ঘোস্ট ক্লিনআপ সম্পর্কে ব্লগ করে ।
একটি ডাটাবেসে সারি মুছে ফেলা প্রকৃত ডাটাবেস ফাইলের আকার হ্রাস করবে না।
সারি মোছার পরে আপনার ডাটাবেসটি কমপ্যাক্ট করতে হবে।
এসকিউএল সার্ভার 2005 ডিবিসিসি শ্রিনকদাটাবেস (লেনদেন-এসকিউএল)
এটি চালানোর পরে, আপনি সূচীগুলি পুনর্নির্মাণ করতে চাইবেন। সঙ্কুচিত হওয়ার কারণে সাধারণত সূচি বিভাজন ঘটে এবং এটি একটি উল্লেখযোগ্য পারফরম্যান্স ব্যয় হতে পারে।
আমি আরও সুপারিশ করব যে আপনি সঙ্কুচিত হওয়ার পরে, আপনি ফাইলগুলি পুনরায় বৃদ্ধি করুন যাতে আপনার কিছুটা ফাঁকা জায়গা থাকে। এইভাবে, যখন নতুন সারি আসে, তখন তারা অটোগ্রোথকে ট্রিগার করে না। অটোগ্রোথের একটি পারফরম্যান্স ব্যয় থাকে এবং আপনি যখনই সম্ভব এড়ানো (সঠিক ডাটাবেস আকারের মাধ্যমে) এড়াতে চান।
আপনার ডেটাবেস সঙ্কোচ করবেন না!
"কেন এটি ঘটে? একটি ডাটা ফাইল সঙ্কুচিত অপারেশন একক সময়ে একটি একক ফাইলে কাজ করে এবং GAM বিটম্যাপগুলি ব্যবহার করে (স্টোরেজ ইঞ্জিনের অভ্যন্তরে দেখুন: GAM, SGAM, PFS এবং অন্যান্য বরাদ্দ মানচিত্র) সর্বাধিক পৃষ্ঠায় বরাদ্দ পাওয়া যায় ফাইলটি এটি এর আগে যতদূর সম্ভব ফাইলের সম্মুখের দিকে এটি সরিয়ে নিয়ে যায়, এবং আরও অনেক কিছু above উপরের ক্ষেত্রে এটি পুরোপুরি ক্লাস্টারড সূচীর বিপরীত হয়ে একে একে পুরোপুরি ডিফ্রিমেন্টেড থেকে পুরোপুরি খণ্ডিত হয়ে যায়। "
http://www.sqlskills.com/BLOGS/PAUL/post/Why-you-should-not-shrink-your-data-files.aspx
"সঙ্কুচিত ডাটাবেসের বিড়ম্বনাটি দেখুন One এক ব্যক্তি স্থান অর্জনের জন্য ডাটাবেস সঙ্কুচিত করে (ভেবেছিলেন এটি কার্য সম্পাদন করতে সহায়তা করবে), যার ফলে খণ্ড বৃদ্ধি (কর্মক্ষমতা হ্রাস করা) বাড়বে। খণ্ডকে হ্রাস করতে, একটি সূচক পুনর্নির্মাণ করে, যা আকারের দিকে নিয়ে যায় ডাটাবেসটি মূল সংকোচনের আগে (সঙ্কুচিত হওয়ার আগে) আকারের চেয়ে আরও বেশি বাড়িয়ে তুলবে Well আচ্ছা, সঙ্কুচিত করে, কেউ সাধারণত যা খুঁজছিল তা লাভ করতে পারেনি। "
আপনি যখন ডেটা মুছবেন, এসকিউএল সার্ভার নতুন ডেটা tingোকানোর জন্য পরবর্তী ব্যবহারের জন্য এর স্থান সংরক্ষণ করে। আপনার ডাটাবেস সঙ্কুচিত করা দরকার। আপনি এখানে আরও তথ্য পেতে পারেন ।
আমি এটি খুঁজে পেয়েছি কারণ আমি সবেমাত্র একগুচ্ছ ব্যাকআপ টেবিলগুলি মুছলাম কারণ আমার ডাটাবেসটি "ম্যাক্স আউট" করেছে। আমি ভেবে ভেবে "সাইজ" সম্পত্তিটি দেখতে থাকলাম কেন ছোট হচ্ছে না? । এটি পড়ার পরে, না, আমি ডেটাবেস সঙ্কুচিত করতে চাই না। আমি যা করতে চাই তা হ'ল আমি যে আবর্জনা সরিয়েছি তার জন্য "পুনরায় দাবি করা" space আমার যা দেখার দরকার ছিল তা হ'ল "স্পেস উপলভ্য"। আমি ভাবছি সম্ভবত এটি অন্য কারও কাছেও দেখার দরকার হতে পারে?
পাশাপাশি লক্ষণীয় যে টেবিলে যদি সূচি থাকে তবে বৃহত্তর ডেটা মুছে ফেলার পরে খণ্ড বিস্তৃত হতে পারে। আমার আজ একটি টেবিল ছিল যা এতে প্রায় 13 গিগাবাইট নিয়ে ~ 70M রেকর্ড ছিল। আমি এটিকে 1639 রেকর্ডে পরিষ্কার করেছি (বাকীগুলি একটি একক বাগ দ্বারা উত্পাদিত হয়েছিল) তবে টেবিলটি এখনও 4.5 গিগাবাইট পর্যন্ত নিয়েছে। আমি টেবিলে সমস্ত সূচী পুনর্নির্মাণ করার পরে, এটি কেবল 85 পৃষ্ঠাগুলি (680 কেবি) নিচ্ছিল। এর পরে, আমি স্থানটি পুনরুদ্ধার করতে ইনক্রিমেন্টাল শিরকিংফিল ব্যবহার করেছি (এবং পুনরাবৃত্তি রোধ করতে সিস্টেমে বাগটি স্থির করে)।