(এটি মূলত @ ডেভির উত্তরের মন্তব্য ছিল, তবে আমি এটির নিজের উত্তরে রেখেছি কারণ এটি দীর্ঘ হয়ে গেছে)
TRUNCATE
হয় একটি লগ অপারেশন। এটি অন্যথায় এটি এসিডি-কমপ্লায়েন্ট নয়। তবে TRUNCATE
এবং এর মধ্যে পার্থক্য DELETE
:
- লগ স্পেসের ব্যবহার:
TRUNCATE
কেবলমাত্র লগগুলি পৃষ্ঠা / এক্সটেনটগুলি * মুক্ত করা হয়, তবে DELETE
পৃথক সারিগুলিকে লগ করে।
- লক ব্যবহার:
TRUNCATE
সাধারণত কম লক ব্যবহার করা হবে, যেহেতু এটি একটি টেবিল লক এবং পৃষ্ঠা লক নেয়, DELETE
যার বিপরীতে সারি লকগুলি ** ব্যবহৃত হয়।
IDENTITY
সিকোয়েন্সগুলি: TRUNCATE
উপস্থিত থাকলে কোনও টেবিলে পরিচয় ক্রমটি পুনরায় সেট করে।
(* একটি মাত্রা = 8 পৃষ্ঠাগুলি। TRUNCATE
তারা যদি সমস্ত এক টেবিল থেকে থাকে তবে লগগুলি লগ / সরিয়ে ফেলবে, অন্যথায় এটি মিশ্র এক্সটেন্টগুলি থেকে পৃষ্ঠাগুলি লগ / সরিয়ে ফেলবে।
** এর এক পার্শ্ব প্রতিক্রিয়া হ'ল DELETE FROM TABLE
অপারেশনটি একচেটিয়া টেবিল লক পেতে পারে কি না তার উপর নির্ভর করে টেবিলের জন্য বরাদ্দ করা খালি পৃষ্ঠাগুলি সম্ভাব্যভাবে ছেড়ে দিতে পারে))
সুতরাং (মূল প্রশ্নের কাছে ফিরে যান), আপনি যদি টেবিলটি ফাঁকা করে রাখেন তবে কাঠামোটি রাখতে চান (এনবি: অন্য টেবিলে বিদেশী কী দ্বারা উল্লেখ করা টেবিলে ব্যবহার করা যাবে না ) TRUNCATE TABLE
তার চেয়ে শেষ পর্যন্ত ভাল ।DELETE FROM TABLE
TRUNCATE
@ টুলোর মন্তব্যে যেমন উল্লেখ করা হয়েছে, আপনার ডাটাবেসের পুনরুদ্ধারের মডেলটিও পরীক্ষা করে দেখুন - এটি যদি পূর্ণ থাকে তবে আপনাকে লগ ব্যাকআপ নেওয়া শুরু করতে হবে, বা আপনার পুনরুদ্ধারের মডেলটিকে সহজ করে তোলা উচিত। একবার আপনি যে কোনও একটি সম্পন্ন করে নিলে, সমস্ত খালি স্থানটি পুনরায় দাবি করতে আপনি সম্ভবত একবার লগ ফাইলটি একবারে বন্ধ অপারেশন হিসাবে সংকুচিত করতে চান (NB: লগ ফাইল কেবল )।
অবশেষে, আরেকটি বিষয় সম্পর্কে সচেতন হতে হবে - সারণী পরিসংখ্যান। চালানোর UPDATE STATISTICS <TABLENAME>' after
truncate /
DELETE` তাই ক্যোয়ারী অপ্টিমাইজার পুরাতন পরিসংখ্যান দ্বারা আপ হোঁচট খেয়েছি না হয়ে যায়।
TRUNCATE TABLE
পরিবর্তে ব্যবহার করার পরামর্শ দিইDELETE FROM
।