Ben veritabanına veri yazma, diğer şeyler arasında işleyen bir web servisi (xmlrpc hizmeti tam olarak) var. İşte senaryo:
Ben genellikle ya güncelleme istekleri almak veya bir kayıt eklemek. Ne yapardın şudur:
- Kayıt zaten varsa, kayda append
- Eğer değilse, yeni bir kayıt oluşturmak
Sorun birkaç apache konuları isteği işlemek için çoğaltılır istekleri bir 'patlama', alacağı bazı zamanlar vardır olmasıdır. Bu 'patlamaları' birbirlerinin milisaniye daha az içinde gelirdi. Şimdi birkaç konu # 1 ve # 2 icra var. Genellikle iki iş parçacığı (aslında birincil anahtar hariç) iki yinelenen kayıtları 'pass' numarasını 1. ve yaratmak olurdu.
Ben diğer iş parçacığı çalışmalarını bitirdiğinde ise tablo erişimini diğer konuları önlemek için bazı kilit mekanizmasını kullanmak istiyorum. Bir şey olursa ben kilitli masayı terk etmek istemiyorum çünkü bunu kullanarak sadece korkuyorum.
- UPDATE: The table already has a primary key. The ideal situation should be that the first thread should create the record if it doesn't exist, then once the second thread comes in, it won't create the another record, but just update the record that was already created. It's almost as though I'd like to make the threads form a single-file line.
Bu işleme sağlam bir yolu var mı? Ben düzgün bunu eğer kilitleri kullanılarak açığım.
Teşekkürler,