v2.5.2
Giriş yap

MySQL Kayıtları hk.

zelemi
492 defa görüntülendi

Merhaba Arkadaşlar,
Sizden bir fikir bir bilgi almak istiyorum.
Elimde bir adet db var bunda 67.milyon küsür kayıt var.(bir adet tabloda)
Bu satır satır tutulan kayıtlara müşteri kodu ataması yapacağım fakat döngüye koysam belli süre sonra patlıyor.
Bu mevcut kayıtları nasıl hepsine müşteri kodunu sağlıklı bir şekilde atarım?
Bu arada her kayıt kendine özel müşteri kodu var sistemde benim amacım tabloda hangi satır hangi müşteriye ait eşleştirmek istiyorum ve tablo her gecen gün daha fazla büyüyor.

Cevap yaz
Cevaplar (7)
percave
1026 gün önce

set_time_limit(0); komutunu kullanarak belli bir süre sonra durmasını engelleyebilirsin. Ayrıca bir linux sunucu üzerinde çalışıyorsan aşağıdaki komut ile arkaplanda açık kalmasını sağlayabilirsin:
sudo nohup php /yol/script.php >/dev/null 2>&1 &
Bu komut ile arkaplanda çalışmasını sağlarsın fakat her 2 durum içinde set_time_limit ile zaman sınırını kaldırman gerekiyor.

fatihozpolat
1027 gün önce

eğer belli başlı ayırt edici bir kolon varsa update sorgusunu join ile yazıp tek seferde halledebilirsin:
örnek kodlar var bu adreste:
https://stackoverflow.com/questions/11709043/mysql-update-column-with-value-from-another-table

kargasa1982
1027 gün önce

Diyelim ki elinde 10K müşteri bilgisi ve ve kodları var. Bu müşterilerin toplam sipariş kayıtları 67M. Yani sen 67M kayıt döndürmeyeceksin, sadece müşteri sayın kadar kayıt döndürüp, her müşteride binlerce kaydı güncelleyeceksin.

zelemi
1028 gün önce

Şuan buna benzer bir yöntem ile işlem yaptırıyorum.
Her 5 dakikada bir crontab te çalıştırıyorum gidiyor kayıtları okuyor ve hangi kayıt hangi müşteriye ait ise bilgiyi alıp direk müşteri kodunu tabloya kopyalıyor.
Ama bu böyle sürerse çok işim var demektir.

abdullahx
1028 gün önce

Biraz PHP kodu bir de cronjob ile çözebilirsiniz. Ne kadar aralıklarla yapacağınızı belirleyin, php dosyasını ilk açtığınızda atıyorum 1-100000 arası güncellensin. bu 100000 sayısını bir json veya text dosyasına kaydedin. Sayfa ikinci defa açıldığında dosyadaki değere bir 100000 daha ekleyip yine ikisi arasındaki veriyi güncellesin. Taa ki bitene kadar. Bu dosyayı da bir cronjob a koyun 2 dakika aralıklarla o kendisi halletsin.

zelemi
1028 gün önce

@abdullahx Evet şuan bu şekilde yapıyorum fakat bu baya zaman kaybına neden oluyor açıkcası daha başka bir yolu var mıdır o yüzden sormak istedim.

abdullahx
1028 gün önce

LIMIT kullanarak yapın, 100 biner şekilde yaparsanız kurtarır mı