PDA

View Full Version : مشکل در افزایش حجم پایگاه داده FireBird



yasser_ebrahimi
چهارشنبه 17 مهر 1392, 15:25 عصر
با سلام.
پایگاه داده برنامه من FireBird هست که تراکنش بسیار زیادی در روز با پایگاه داده برقرار میشه. به طور میانگین هر روز 600 هزار رکورد اضافه و حذف میشه. ولی متاسفانه همینطور حجم فایل دیتا بیس بیشتر میشه و بعد از حذف رکوردها هم تغییر نمیکنه. من نمیتونم دائم BackUp بگیرم چون کارایی سیستم رو پایین میاره.
ممنون میشم اگه راهنمایی کنید.
لطفاً اگر پایگاه داده دیگه ای که به صورت Embedded باشه رو میشناسی معرفی کنید چون Firebird مشکل حجمش خیلی حاده و SQLlite هم Stream رو پشتیبانی نمیکنه

بهروز عباسی
شنبه 20 مهر 1392, 09:59 صبح
لطفاً اگر پایگاه داده دیگه ای که به صورت Embedded باشه رو میشناسی معرفی کنید چون Firebird مشکل حجمش خیلی حاده و SQLlite هم Stream رو پشتیبانی نمیکنه
مشکل باید چیز دیگه ای باشه ! من یه جای بودم یه برنامه دیدم که دیتابیسش FB بود .برنامه تقریباً 15 سال ورود و خروج کارکنان شرکت (چندهزار نفر) رو ثبت کرده بود تازه حجمش 1.5 گیگابایت شده بود! پس مشکل نمیتونه از fb باشه. مشکل در طراحی و پیاده سازیه، اگه ممکنه کمی بیشتر توضیح بده ؛ حجم Page table ات چقدره؟و.. .

yasser_ebrahimi
یک شنبه 21 مهر 1392, 08:52 صبح
آقای عباسی از توجهتون متشکرم


پس مشکل نمیتونه از fb باشه. مشکل در طراحی و پیاده سازیه
چون حجم اطلاعاتی که توی سیستم کلاینتها ذخیره میشه به همین دلیل یک دیتا بیس Local ایجاد کردم که دائماً با سرور ترافیک ایجاد نکنن و همه دیتا رو روی خودشون نگه دارن و بعد آخر شب کل فایل پایگاه رو به سرور منتقل کنن. قبلاً ار SQLLite استفاده میکردم مشکلی نداشتم ولی متاسفانه وقتی رو آوردم به Stream دیگه پاسخگو نبود. ممکنه توی یک روز حجم تراکنش به 4 گیگابایت برسه و توی روز های دیگه چند صد مگابایت بیشتر نباشه ولی مشکل FireBird اینه حجم دیتابیس روی همون 4 گیگابایت مونده که این باعث شده سرعت خیلی بیاد پایین.


حجم Page table ات چقدره؟
الان بصورت default هست. DefaultDbCachePages = 2048

کامروا
یک شنبه 21 مهر 1392, 10:56 صبح
Many users wonder why they don't get their disk space back when they delete a lot of records from database.

The reason is that it is an expensive operation, it would require a lot of disk writes and memory - just like doing refragmentation of hard disk partition. The parts of database (pages) that were used by such data are marked as empty and Firebird will reuse them next time it needs to write new data.

If disk space is critical for you, you can get the space back by doing backup and then restore. Since you're doing the backup to restore right away, it's wise to use the "inhibit garbage collection" or "don't use garbage collection" switch (-G in gbak), which will make backup go A LOT FASTER. Garbage collection is used to clean up your database, and as it is a maintenance task, it's often done together with backup (as backup has to go throught entire database anyway). However, you're soon going to ditch that database file, and there's no need to clean it up.



منبع از سایت رسمی (http://www.firebirdfaq.org/faq41/)

یک موضوع دیگه اینه که، فرض کنید شما اگر 1GB اطلاعات در دیتابیس ذخیره کردید و بعد که تمام این اطلاعات رو حذف کردید و حجم دیتابیس کاهش داده نشد، بعد از درج اطلاعات جدید هم حجم دیتابیس افزایش پیدا نخواهد کرد.
در واقع اطلاعات جدید جایگزین اطلاعات حذف شده می شوند چون بصورت منطقی حذف شدند.