View Full Version : اینسرت کردم 20/000 داده در دیتابیس
aliphp1
دوشنبه 29 آبان 1391, 01:40 صبح
سلام دوستان
من یک برنامه نوشتم که اطلاعاتی رو از یک فایل میگیره و درون دیتابیس ذخیره می کنه
این اطلاعات ممکنه حدود 20 هزار خط باشه که باید هر خط در یک ردیف و هر قطعه از خط در یک فیلد ذخیره بشه
برنامه خطای محدودیت زمانی میده ویطش البته می دونم که با تغییر مقداری در php.ini مشکل برطرف یشه که همین کار رو هم کردم
ولی می خوام بدونم چطوری این زمان رو کم کنم شاید بیش از 10 دقیقه طول بکشه اونم روی لوکال
روش استانداردی وجود نداره که زمان درج مقادیر در دیتابیس mysql رو کاهش بده ؟
aliphp1
دوشنبه 29 آبان 1391, 12:34 عصر
دوستن کسی نبود جواب بده ؟
سعید صابری
دوشنبه 29 آبان 1391, 15:08 عصر
ديتاي شما چي است كه 20000 خطه؟ و يكجا مي خواهي اينسرت كني؟
من 163840 ركورد در جدول وارد كردم در
163840 row(s) affected
Execution Time : 1.042 sec
Transfer Time : 0.001 sec
Total Time : 1.044 sec
mrgraphy
چهارشنبه 01 آذر 1391, 12:48 عصر
سلام دوست عزیز.
شما میتویند با استفاده از متد sleep در php بین زمان های insert خودتون فاصله زمانی ایجاد کنید که دیگه نه نیازی به دست کاری php.ini نباشه و نه mysql به شما خطای محدودیت زمانی بده.
به این صورت که بگید 100 خط بریزه بعد 10 ثانیه کد متوقف بشه بعد دوباره 100 تا بعدی.
به این تاپیک توجه کنید.
http://barnamenevis.org/showthread.php?356694-%DA%A9%D8%B1%D8%A7%D9%86-%D8%AC%D8%A7%D8%A8%D8%B2-Cron-Jobs
aliphp1
سه شنبه 28 آذر 1391, 22:10 عصر
مشکل من خطا نیست اون رو می تونم با تغییر در php.ini درست کنم
مشکل زمان زیاد هست
خیلی وقتم رو میگیره
و فکر می کنم منطقی هم نیست که اینقدر طول بکشه ولی چند بار هم چک کردم به نظرم مشکلی نداشت
حالا اگه لازم شد کد رو میزارم اینجا ببینید
espootin
چهارشنبه 29 آذر 1391, 13:16 عصر
در mysql انواع روش ها برای درج داریم ، که بستگی به نوع درج باید بهترین رو انتخاب کنی.
درج ساده :
Insert into Table (ColumnNames) values (Values)
درج با سرعت بیشتر : در این روش همه داده ها یکجا فرستاده میشن و تا 10 برابر سرعتش بیشتره.
Insert into Table (ColumnNames) values (Values1),(Values2),...(ValuesN);
درج پیشرفته : این روش چند برابر سرعتش بیشتر از قبلی هست ، که البته از فایل مستقیم می خونه.
LOAD DATA LOCAL INFILE 'fileName.txt' INTO TABLE TableName
FIELDS TERMINATED BY '' LINES TERMINATED BY '\n';
در صورتی که از روش دوم یا سوم استفاده کنی ، زمان درج بسیار کمتر خواهد شد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.