آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

افزایش بی دلیل حجم دیتابیس

Lion  9 سال پیش  9 سال پیش
0 0

سلام

من ی دیتابیس دارم ک حجمش تقریبا 13 مگ هست ک یک table دارد و  آن هم حدودا 600 رکورد دارد.

حالا  این table  رو به چند تا table  تقسیم کردم.(حجم اطلاعات ثابته)

الان میبینم حجم دیتابیسم به 250 مگ رسیده!!!

الان مشکل کار کجاست و باید چه کار کنم ؟

ممنون.

 

0 0
کسی نمیتونه کمکم کنه؟ کارم گیره:( (9 سال پیش)
+1 0
فیلد ها تون در جدول های مختلف تکرار نمیشه یکم بیشتر توضیح بدین یا استرکچر table هاتون به چه صورته (9 سال پیش)
0 0
ی table دارم ک 600 تا ردیف داره حالا میخوام این ی table رو به 6 تا table ک هر کدوم 100 تا ردیف ردیف داره تقسیم کنم. برای این کار از table اولیه 5تا کپی دگ گرفتم و در هر جدول ما بقی اطلاعات رو drop کرردم (مثلا در table اول ردیف 200 تا 600 رو drop کردم ) حالا حجم دیتا بیسم ب 250 مگ رسیده. فک میکنم اطلاعاتی ک drop کرده بودم بصورت کامل پاک نشدند. (9 سال پیش)
+1 0
خوب شاید شما دلیل خاصی برای تقسیم جدول هایتان دارید ولی اصولا کار با یک جدول و مدیریت و بازیابی داده از اون خیلی راحت تره و شما تعداد رکورد بی نهایت زیادی ندارین که بخاین جدولتون رو تقسیم کنید و از طرفی شما میخاید از دستورات sql استفاده کنید برای مدیریت جدولتون و نه اینکه دستی این کارو انجام بدین پس به نظر من اصولا این کارتون منطقی نیست و مدیریت دیتا بیستون رو سخت میکنه حالا بماند که دلیل این افزایش حجم چیه ... (9 سال پیش)
+1 0
البته منظور من از کار با یک جدول وقتیه که مثل جدول شما همه یکی هستند و فقط رکوردهایش توی جدول های مختلف تقسیم شده (9 سال پیش)
0 0
ممنون از پاسختون (9 سال پیش)
0 0
اگر بخوام دیتابیسم رو vacum کنم باید چه کار کنم؟ (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
زهرا رئیسی  9 سال پیش
+4 0

 پاسخ صحیح

وقتی شما اطلاعاتی را از پایگاه داده حذف می کنید  سیستم آن به این صورت است که ترجیح داده می شود فضایی که اختصاص داده شده حفظ شود شما میتونید این فضا را به صورت دستی با اجرای دستور ر VACUUM از SQLite بهبود دهید و جمع و جور کنید و از هدر رفتن فضا جلوگیری کنید .

این امکان وجود دارد با  فعال کردن حالت auto_vacuum، اما این باید قبل از ایجاد پایگاه داده انجام شود.

من از نرم افزار sqlite expert استفاده میکنم که وقتی دیتا بیس جدید ایجاد میکنیم گزینه auto_vacuum را داره و میتونید انتخاب کنید

 


 این کدها هم  را هم استفاده کنید البته من خودم استفاده نکردم و صد در صد از نتیجه آن مطمئن نیستم

 public  void deletetable(String Tablename){
    SQLiteDatabase db = mContext.openOrCreateDatabase(DB_NAME,
            Context.MODE_PRIVATE, null);
    db.delete(Tablename, null, null);
    db.execSQL("VACUUM");
}
 

و دیگه اینکه اگر حذف زیادی از دیتا بیستون ندارین اصلا نیاز به استفاده از vacuum نیست

 
 

 

0 0
ممنون از راهنماییتون (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .