View Full Version : سوال: پاک کردن اطلاعات قدیمی از دیتابیس
hitsfa
پنج شنبه 14 اسفند 1393, 00:27 صبح
سلام دوستان
من دیتابیسی دارم که رکوردها توش دخیره میشن که روزانه بالای 10000تا هستش و بعد از یکی دو هفته دیتابیس 10مگابایتی میشه 200 مگابایت
در صورتی که به اطلاعات یک هفته پیش نیازی نیست
میخواستم ببینم چجوری میشه از خود phpmyadmin کاری کرد که اطلاعات مثلا یک هفته قبل پاک بشن یعنی اطلاعات قدیمی تر حذف بشن
آیا این کار ممکنه؟
golbafan
یک شنبه 17 اسفند 1393, 20:54 عصر
سلام
از دستور truncate استفاده کنید
hitsfa
دوشنبه 18 اسفند 1393, 00:00 صبح
سلام
از دستور truncate استفاده کنید
تا جایی که میدونم این دستور شرط قبول نمیکنه و کلی حذف میکنه
چجوری میشه شرطی قرار داد که فقط رکوردهای یه زمان مشخص رو حذف کرد مثلا یک هفته پیش رو
میشه یه مثال بزنید من یکم خیلی مبتدیم
golbafan
دوشنبه 18 اسفند 1393, 07:55 صبح
سلام
delete from table1 where datefield between x and y;
optimize table table1;
سعید صابری
دوشنبه 18 اسفند 1393, 09:50 صبح
میتونی از event استفاده کنی بصورت اتوماتیک این کار برات انجام بشه البته با همون دستور Delete
hitsfa
دوشنبه 18 اسفند 1393, 12:30 عصر
سلام
delete from table1 where datefield between x and y;
optimize table table1;
بجای متغیر x و y چی قرار بدم؟
hitsfa
دوشنبه 18 اسفند 1393, 12:31 عصر
میتونی از event استفاده کنی بصورت اتوماتیک این کار برات انجام بشه البته با همون دستور Delete
یه مثال میشه بزنید
ممنون
golbafan
دوشنبه 18 اسفند 1393, 17:46 عصر
بجای متغیر x و y چی قرار بدم؟
منظورم بازه تاریخی هست که میخواهید پاک کنید
مثلا:
delete from table1 where datefield between "2013-05-26" and "2014-05-26";
یا
delete from table1 where datefield < "2013-05-26";
hitsfa
دوشنبه 18 اسفند 1393, 22:24 عصر
منظورم بازه تاریخی هست که میخواهید پاک کنید
مثلا:
delete from table1 where datefield between "2013-05-26" and "2014-05-26";
یا
delete from table1 where datefield < "2013-05-26";
متاسفانه هیچکدوم کار نکردن
ارور میدن
#1054 - Unknown column 'datefield' in 'where clause'
سعید صابری
سه شنبه 19 اسفند 1393, 12:18 عصر
به خاطر اینه که باید به جای datefield اسم فیلد خودت بزاری!دستمون برای مثال datefield گفتند.
سعید صابری
سه شنبه 19 اسفند 1393, 12:26 عصر
پست اشتباهی زدم.ولی امکان حدف نداره.مدیر لطفا
hitsfa
سه شنبه 19 اسفند 1393, 12:36 عصر
به خاطر اینه که باید به جای datefield اسم فیلد خودت بزاری!دستمون برای مثال datefield گفتند.
ببینید من یه مثال میزنم
من یه دیتابیس دارم به اسم X
داخل این دیتابیس یه جدول دارم به نام visits که برای هر بازدید یه رکورد میسازه داخل همین جدول و همنیطور دخیره میشه روی هم که آخر سر حجم دیتابیس خیلی زیاد میشه و سرعت لود سایتم پایین میاد
من میخوام که یه کدی باشه تا بتونم مثلا رکوردهای یک هفته پیش رو پاک کنم از اون جدول
الان برای این مثال یه کد میخوام
سعید صابری
سه شنبه 19 اسفند 1393, 12:53 عصر
شما باید در جدولتون یک فیلد از نوع timestamp بزارید که بصورت اتوماتیک برای هر فیلد تاریخ درج کند.بعد برای حذف مشکلی نخواهید داشت برای مثال
فرض کنید فیلد timestamp به نام D هستش
delete from table
WHERE D < CURDATE() -7
اطلاعاتی که عمرشون بیشتر از 7 روز است را پاک می کند
hitsfa
چهارشنبه 20 اسفند 1393, 12:49 عصر
شما باید در جدولتون یک فیلد از نوع timestamp بزارید که بصورت اتوماتیک برای هر فیلد تاریخ درج کند.بعد برای حذف مشکلی نخواهید داشت برای مثال
فرض کنید فیلد timestamp به نام D هستش
delete from table
WHERE D < CURDATE() -7
اطلاعاتی که عمرشون بیشتر از 7 روز است را پاک می کند
خیلی ممنون دوست عزیز
دقیقا همین رو میخواستم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.