Çabuk Aynı Satırları'nı seçin ve güncelleştirme için çalışılıyor

1 Cevap php

Ben çok sık güncellenen bir MySQL tablo var. Özünde, bir kerede birden fazla PHP ile 500 satırları kapmak için çalışıyorum, ve ben PHP komut aynı satırları kapmak istemiyorum. Ben nedeniyle satırları binlerce ile sunucu yükü RAND () ORDER BY kullanmak için değil yapmak.

Yani, ben sadece her script "1" olarak her satırın durumunu ayarlamak (yani tekrar yakaladı olmaz) sahip düşündüm. Yani, 500 satırları kapmak istediğiniz yere status = 0 (I asc tarafından SEÇİN sırasını kullanın), ve başka bir komut dosyası bu kapmak değil ki o durum "1" olarak ayarlandığında, bu tam 500 satır var.

Tablo her zaman güncel ediliyor beri, ben art emriyle 500 satırları seçemezsiniz, ve zaman o komut dosyasını başlatmak için SELECT yapmak sürer, çünkü o, art satırlara göre 500 satırları güncellemek, daha fazla satır eklenebilir.

Bu nedenle, ben seçilmiş hangi satırların "hatırlamak" ve bunları güncelleştirmek şekilde sonra 500 satırları SELECT ve bir yol gerekir.

Ben anlatıldığı gibi hızlı bir şekilde nasıl SELECT ve UPDATE yapıyor hakkında gitmek istiyorsunuz?

1 Cevap

Her komut dosyası için benzersiz bir kimlik (sadece rastgele bir tamsayı genellikle bu amaçlar için çalışıyor) oluşturun.

Her sürecin bir UPDATE table SET status = <my random id> WHERE status = 0 LIMIT 500 sorguyu çalıştırın.

Sonra aslında satırları almak için her süreç bir SELECT ... FROM table WHERE status = <my random id> çalıştırmak.

Özünde, mevcut komut first satırları "kilit", ve sonra başarıyla kilitli olanları almak gidin.