Ben girişleri çok sayıda üzerinden veri büyük miktarda güncelleştirmek için gereken bir uygulama var. Temelde bazı 7,000 ekler ve / veya güncellemeler yapar ama (gibi neredeyse 9 dakika ... sorgu başına yaklaşık 0.08 saniye ortalama) looooong zaman alır. Esasen ben bu tür birden çok isteklerini yapmak için genel hız ups arıyorum (benim belirsiz Örneğin belirli bir cevap bekliyordum değilim ... sadece şerefine, umarım, açıklamaya yardımcı).
İşte istekleri profil bazı örnekler şunlardır:
SELECT `habitable_planets`.* FROM `habitable_planets` WHERE (timestamp = '2010-10-15T07:30:00-07:00') AND (planet_id = '2010_Gl_581_c')
INSERT INTO `habitable_planets` (`planet_id`, `timestamp`, `weather_air_temp`, `weather_cell_temp`, `weather_irradiance`, `weather_wind_float`, `biolumin_to_date`, `biolumin_detected`, `craft_energy_usage`, `craft_energy_consumed_to_date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
SELECT `habitable_planets`.* FROM `habitable_planets` WHERE (timestamp = '2010-10-15T07:45:00-07:00') AND (planet_id = '2010_Gl_581_c')
INSERT INTO `habitable_planets` (`planet_id`, `timestamp`, `weather_air_temp`, `weather_cell_temp`, `weather_irradiance`, `weather_wind_float`, `biolumin_to_date`, `biolumin_detected`, `craft_energy_usage`, `craft_energy_consumed_to_date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Tekrarlayın bıktıracak (iyi, yaklaşık 7.000 kez). Bu 24 saatlik bir süre boyunca aralıklarla oluşturulan veri toplar ve daha sonra günde bir kez veritabanına büyük bir güncelleştirme yapan bir güncelleme. Sınırlı bit göz önüne alındığında ben bu süreci hızlandırmak için herhangi bir öneriniz var gösterilir ettik?
Örneğin ... Bu, her zaman damgası için bir seçme yapmak yerine, tek seferde ve daha sonra onlar üzerinde yineleme komut bir dizi için seçerim mantıklı olur?
Belli belirsiz gibi:
SELECT `habitable_planets`.* FROM `habitable_planets` WHERE (planet_id = '2010_Gl_581_c')
$foo bu sonucu atamak ve sonra yapın:
foreach ($foo as $bar)
{
if ($bar['timestamp'] == $baz) // where $baz is the needed timestamp
{
// do the insert here
}
}
EDIT: bu biraz eklemek için, benim durumda cevabın gelişmiş bir şey, mevcut bir kaydın kontrol kod bir demet değiştirmek ve ya bir kullanarak içine sonucu bağlı bir ekleme veya güncelleme yaptı INSERT... ON DUPLICATE KEY UPDATE a> sql sorgusu. Bu denklemin dışında veritabanı en az bir gezi kesmek ve binlerce istek üzerine bu gerçekten ekler, çünkü bu benim özel durumda yaklaşık% 30 hız artışı sonuçlandı.