PDA

View Full Version : کم کردن حجم پایگاه داده روی دیسک



Barbababak
پنج شنبه 15 مرداد 1388, 09:42 صبح
با سلام
من توی یک وب سایت دیتابیسی دارم که با داشتن فقط 15000 رکورد به حجم 135 مگابایت رسیده. این سایت طوری هست که مدام به اطلاعاتش افزوده می شه و تازه هنوز به یک سال نرسیده که راه افتاده.

مشخصات جدول اصلی پایگاه داده :
تعداد فیلد ها : 130
تعداد فیلدها بر اساس نوع :
bit : 41
int : 39
money : 5
datetime : 4

nVarchar(25) : 5
nVarchar(30) : 3
nVarchar(50) : 5
nVarchar(100) : 11
nVarchar(150) : 3
nVarchar(150) : 2
nVarchar(200) : 2
nVarchar(250) : 6
nVarchar(2000) : 1

nText : 2


تمام فیلدهای رشته ای مقدار پیش فرض '' (رشته تهی) و تمام فیلدهای عددی و بیت مقدار پیش فرض 0 دارند. هیچ فیلدی در تمام رکوردها مقدار null ندارد.

می خوام بدونم که آیا روشی هست که با اون بتونم حجم پایگاه داده ام رو کم کنم؟ اگر لازم باشه کد برنامه نویسیم رو تغییر می دم که با ساختار پایگاه جدیدم سازگار باشه.
ممنونم

amin_alexi
جمعه 16 مرداد 1388, 01:40 صبح
سلام
اول ببین Log File بزرگ شده یا Data File اگه LogFile بود که می تونی از Shrink کردن استفاده کنی (یک Search بزنی کنی مطلب در موردش هست !)
اگه Data File بزرگ میشه که باید فیلدهایی میشه رو کوچیکانتخاب کنی مثلا اگه int داری و میشه tinyInt کرد این کار رو بکن !
یا اگه می تونی nText رو به Nvarchar(max ) تغییر بده ! (البته در Version 2005 به بالا)

Barbababak
شنبه 17 مرداد 1388, 09:27 صبح
اون حجمی که داده بودم بعد از شرینک کردن بود.
حالا روی کامپیوتر خودم چند تا از فیلدها رو پاک کردم، اما بعد از شرینک دوباره جای جدولی که نشون میداد پیغام زیر داده می شه :


DBCC SHRINKDATABASE: File ID 1 of database ID 7 was skipped because the file does not have enough free space to reclaim.
DBCC SHRINKDATABASE: File ID 2 of database ID 7 was skipped because the file does not have enough free space to reclaim.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.


مشکل کجاست؟

Barbababak
شنبه 17 مرداد 1388, 09:31 صبح
این رو هم بگم که وقتی با کد نویسی در محیط Managemenet Studio خواستم اون فیلدها رو پاک کنم این کار انجام نشد و مجبور شدم از ویزارد برای پاک کردن فیلدها استفاده کردم.

amin_alexi
شنبه 17 مرداد 1388, 13:11 عصر
حجم logFile 135 MB شده یا DataFile !!
اگه Log که بگو دستوری که استفاده کرده چی بوده !؟
چون بعد از Shrink و وقتی Size جدید میدیم باید کم بشه !
با توجه به پیغامی هم که داده انگار عملیات Shrink انجام نشده !

Barbababak
شنبه 17 مرداد 1388, 13:38 عصر
از فایلهای روی سرور خبری ندارم اما روی کامپیوتر خودم که اطلاعات کمتری داره
لاگ : 500 کیلوبایت
داده : 77 مگابایت
بله عملیات انجام نشده. میترسم با پاک کردن چند تا فیلد روی سرور، از اون به بعد نتونم پایگاه داده رو شرینک کنم.
چه کار کنم؟!

بهنام بهمنی
شنبه 17 مرداد 1388, 16:40 عصر
حجم بالا لزوما به معنی طراحی بد یا مشکل داشتن پایگاه داده نیست , اگر واقعا شما 130 فیلد با طولهای گفته شده نیاز دارید خوب حجم مهم نیست.توصیه می کنم , قوانین نرمال سازی را مرور کنید, چون تعداد 130 فیلد در یک جدول مقداری عجیب به نظر می رسد.در باره نرمال سازی در همین تالار جستجو کنید

Barbababak
شنبه 17 مرداد 1388, 19:07 عصر
راهی هست که بتونم با اون حجم فایل داده رو روی دیسک سرور بدست بیارم؟