سلام
اگر بخواهیم مثلا 10000 رکورد را در دیتابیس وارد کنیم کدام روش پیشنهاد می شود
1 - قرار دادن 10000 رکورد در یک آرایه و وارد کردن یک باره مثلا توسط insert
2 - ثبت سطر به سطر اطلاعات مثلا توسط save
در روش اول حافظه ram اشغال می شود و ممکن است سرور down شود
در روش دوم cpu درگیر می شود وممکن است سرعت کم شود
اگر درست نوشتم کدام پیشنهاد می شود ؟
یا روش بهتری سراغ دارید؟
شاید پاسخ شما همینجا باشد
سلام
تشکر از سینا شاهاویسی و سیدعلی موسوی
ببخشید من سوالم رو درست مطرح نکردم
من می خوام اطلاعات از یک منبع خارجی بگیریم با حجم بالا مثلا یک آرایه متشکل از 100 عضو و هر عضو 10000 یا 100000 رکورد تکست و هر رکورد 500 کاراکتری و بعد این مقادیر را در دیتابیس وارد کنم
چطوری وارد کنم
اطلاعات چطور در سرور از متغیر data بگیرم جدا کنم ودر دیتابیس خود وارد کنم
دیتابیس هم روی سرور خودم است
public function insert($data)
{
foreach ($data as $key => $value1) {
foreach ($value1 as $key => $value2) {
foreach ($value2 as $key => $value3) {
### insert 1
}
### insert 2
}
### insert 3
}
### insert 4
}
1 - گرفتن و قرار دادن 10000 رکورد در یک آرایه و وارد کردن یک باره مثلا توسط insert
2 -گرفتن و ثبت سطر به سطر اطلاعات مثلا توسط save
در روش اول حافظه ram اشغال می شود و ممکن است سرور down شود
در روش دوم cpu درگیر می شود وممکن است سرعت کم شود
سلام بهتره برای اینکه هم از رم و سی پی یو همزمان کم نیارید بهتره از روش chunk استفاده کنید
بر حسب دیتایی که دارید به چند قسمت مساوی تقسیم کنید و هر قسمت رو آرایه مجزا کرده و از دستور insert استفاده کنید در این روش نه مشکل سی پی یو پیدا میکنید نه مشکل رم .
تشکر از شما آقای مهدوی
همونطور که جناب @mahdavi فرمودند روش chunk خیلی روش خوبی میتونه باشه. نه CPU کم میارید نه رم.