View Full Version : حذف log بعد از حذف رکورد
aminmousavi
دوشنبه 31 شهریور 1393, 15:21 عصر
سلام دوستان .
بنده یک مشکلی که دارم اینکه بعد از حذف رکورد ، حجم دیتابیس ام کم نمیشه . حدس میزنم برای log باید باشه . آیا میشه log هارو ذخیره نکرد ؟ یا روشی پیشنهاد بدین که بتونم حجم دیتابیس رو پایین بیارم ؟
یوسف زالی
دوشنبه 31 شهریور 1393, 15:36 عصر
سلام.
باید در هنگام ایجاد اون رو simple درست کنید تا لاگی ثبت نشه.
aminmousavi
پنج شنبه 03 مهر 1393, 02:37 صبح
با سلام مجدد ، ممنون از راهنماییتون .
بنده روشی که گفتید رو امتحان کردم اما مشکلم حل نشد ، همانطور که عرض کردم میخواستم بعد از حذف رکورد ، حجم دیتابیس هم کاهش پیدا کنه ، اما فرقی نکرد ، بنده روشی که رفتم رو عرض میکنم ، اگر جایی اشتباه عمل کردم ممنون میشنم راهنمایی کنید :
برای تست دوتا دیتابیس ساختم یکی Full و یکی Simple
- NewDatabase
-Option
-Recovery Model رو برابر با Simple قرار دادم .
با یک برنامه 100 هزارتا رکورد توی هر دو دیتابیس (یکی simple و یکی دیگر full) درج کردم که حجم هر دو شد 28mb و بعدش کل رکورد ها رو از هر دو جدول پاک کردم و هر دو دیتابیس حجمشون شد 150mb در اصل توی حجم این دو تا دیتابیس تفاوتی ایجاد نشد .
تنها راهی که بنده بلدم اینکه Shrink انجام بدم تا حجم کاسته بشه ، اما خوب نمیتوانم هرچند وقت یکبار برای هردیتابیس این عملیات رو انجام بدم .
راهی برای کاهش حجم دیتابیس وجود ندارد به غیر از Shrink ؟
یوسف زالی
پنج شنبه 03 مهر 1393, 02:48 صبح
چیزی که من گفتم، عدم ثبت لاگ بود.
برای این که بعد از حذف رکورد حجم کاهش پیدا کنه باید دیتابیس رو شرینک کنید که بسیار زمان بر و هزینه بره. مثلا هر چند روز یک بار این کار رو کنید. شرینک کاری معادل دیفرگ در دیسکه.
سیستم فایلی اس کیو ال، بعد از حذف یک رکورد، فضای خالی باقی می گذاره، دلیلش هم اینه که ارزش نداره تمام دیتابیس شیفت بده به بالا. در خصوص سیستم ذخیره فایل و روشهای TLF و Pile تحقیق کنید دستتون میاد.
مثل اینه که قطعات دومینو رو بصورت صف بچینید، با حذف قطعات وسط، مجبور هستید تمام باقی مانده دومینو ها رو انتقال بدید به عقب تر، خودتون حدس بزنید چه بلایی سر سرعت میاد.
baran92
شنبه 06 دی 1393, 08:08 صبح
سلام
برای اینکه دیتابیس لاگ ذخیره نکند باید Recovery model دیتابیس را در حالت simple قرار دهید در صورتیکه می خواهید shrink را هر چند وقت یکبار بصورت دستی اعمال ننمائید ، بر روی دیتابیس راست کلیک کنید Properties را انتخاب کنید در قسمت option مقدار auto shrink را به true تغییر دهید.
جهت مدیریت دیتابیس ها لینک زیر رامشاهده نمائید:
http://serverscript.ir/?product=%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1-%D9%88%DB%8C
esteghamat
شنبه 06 دی 1393, 15:59 عصر
با سلام
ضمن تشکر از راهنمایی دوستان.
در هر دو حالت Simple و Full تمامی Log ذخیره می شود. چون sql server برای Recovery و تضمین صحت داده ها به آن نیاز دارد. اما در مد simple حجم لاگ افزایش پیدا نمی کند و با هر CheckPoint لاگ قبلی برای رونویسی آماده می شود.
در ضمن اگر بتوانید گزینه شرینگ اتوماتیک را فعال نکنید بهتر است چون به مرور Defragmentation بسیار زیادی برای شما ایجاد می کند. (اصولا شرینک دیتا به جز در موارد ضروری توصیه نمی شود.)
بهتر است با اسکریپت و یا بصورت دستی Shrink File را (فقط با انتخاب فایل Log) انجام دهید.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.