Oracle
 sql >> база данни >  >> RDS >> Oracle

конкуренция за редове на Oracle, причиняваща грешки в безизходно блокиране в JMS приложение с висока пропускателна способност

Блокирането предполага, че всяка нишка се опитва да актуализира множество редове в една транзакция и че тези актуализации се извършват в различен ред в нишките. Следователно най-простият възможен отговор би бил да се модифицира кодът, така че съобщенията в рамките на една и съща транзакция да се прилагат в определен ред (т.е. по реда на първичния ключ). Това би гарантирало, че никога няма да получите блокиране, въпреки че все пак ще получите блокиращи заключвания, докато една нишка чака друга нишка да извърши своята транзакция.

Връщайки се назад обаче, изглежда малко вероятно наистина да искате много нишки да актуализират един и същ ред в таблица, когато не можете да предвидите реда на актуализациите. Изглежда много вероятно това да доведе до много загубени актуализации и доста непредсказуемо поведение. Какво точно прави вашето приложение, което би направило този вид нещо разумно? Правите ли нещо като актуализиране на обобщени таблици след вмъкване на редове в подробна таблица (т.е. актуализиране на броя на показванията, които публикацията има в допълнение към регистриране на информация за определен изглед)? Ако е така, наистина ли трябва тези операции да бъдат синхронни? Или бихте могли периодично да актуализирате броя на изгледите в друга нишка, като обобщите изгледите през последните N секунди?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. вложена заявка за избор или присъединяване?

  2. Sql Script файл (apex_epg_config.sql) липсва в Oracle Apex 20.2

  3. Oracle SQL заявка - генериране на записи между две дати

  4. как да съхранявате дата И час с JPA в Oracle?

  5. Как да шифровате парола в Oracle?