MySQL için ne motor kullanıyorsunuz? Burada dikkat edilmesi gereken şey, MyISAM kullanıyorsanız, o zaman bu motoru kullanır kilitleme nedeniyle masaya sorunları kilitleme var kalacaksın.
Gönderen: MySQL Table Locking
Table locking is also disadvantageous
under the following scenario:
* A session issues a SELECT that takes a long time to run.
* Another session then issues an UPDATE on the same table. This session
waits until the SELECT is finished.
* Another session issues another SELECT statement on the same table.
Because UPDATE has higher priority than SELECT, this SELECT waits for the UPDATE to finish,
after waiting for the first SELECT to finish.
I won't repeat them here, but the page has some tips on increasing concurrency on a table within MySQL. Obviously, one option would be to change to an engine like InnoDB which has a more complex row locking mechanism that for high concurrency tables can make a huge difference in performance. For more info on InnoDB go here.
Prior to changing the engine though it would probably be worth looking at the other tips like making sure your table is indexed properly, etc. as this will increase select and update performance regardless of the storage engine.
Edit based on user comment:
I would say it's one possible solution based on the symptoms you've described, but it may not be
the one that will get you where you want to be. It's impossible to say without more information.
You could be doing full table scans due to the lack of indexes. This could be causing I/O contention
on your disk, which just further exasterbates the table locks used by MyISAM. If this is the case then
the root of the cause is the improper indexing and rectifying that would be your best course of action
before changing storage engines.
Also, make sure your tables are normalized. This can have profound implications on performance
especially on updates. Normalized tables can allow you to update a single row instead of hundreds or
thousands in an un-normalized table. This is due to unduplicated values. It can also save huge amounts
of I/O on selects as the db can more efficiently cache data blocks. Without knowing the structure of
the tables you're working with or the indexes you have present it's difficult to provide you with a
more detailed response.
Edit after user attempted using InnoDB:
Eğer Java süreç multi-threaded olduğundan bahsetmiştir. Tek bir iş parçacığı ile işlemini çalıştıran denediniz mi? Belki muhtemelen birden çok iş parçacığı ve / veya parçacıkları arasında güncelliyoruz yolu sorunları kilitleme neden dışarı güncelleştirmek için aynı satırları yolluyoruz eğer ben merak ediyorum.
Bunun dışında, ben şunları kontrol eder:
- Eğer sizin makul maliyetleri ve sorgu aslında var indeksleri kullanılarak olduğunu var doğrulamak için planlarını açıklamak kontrol ettiniz mi?
- Lütfen tablolar normalize edilir? Tablolar normalize olsaydı tek bir kayıt güncelleme olabilir Daha spesifik olarak, 100 satırlar güncelliyoruz?
- Bu Java işlemin çalıştığı ve makine içinde ve dışında yoğun takas şeyler olduğunda fiziksel bellek tükeniyor olması mümkün mü?
- Eğer makul işleyebilir daha fazla GİB ile disk (tek bir disk?) Sel?