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

Обработка на транзакция в многонишкова среда

Бих предложил да поставите на опашка всички SQL действия от множество нишки в някаква междинна структура от данни и след това да ги поставите в база данни от една нишка. Възможно е да имате нишки безопасни междинни структури като ConcurrentHashMap , ConcurrentLinkedQueue или можете просто да синхронизирате, когато работите с него.

По този начин дори не е необходимо да стартирате транзакцията предварително. Изчакващите данни може да са по-малко безопасни, но предполагам, че не са много по-безопасни в базата данни, докато транзакцията все още не е ангажирана.

Разбира се, това може да работи само ако нямате select изявления, избиращи данни за незаети транзакции от същата транзакция. Да се ​​отървете от такива заявки по един или друг начин може да изисква преработка.

Използвайте CountDownLatch за да открие кога всички данни са готови и нишката за писане на база данни трябва да започне своето действие. Ако това никога не се случи, използвайте модел на реактор за нишката за писане на база данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите списък с изгледи на MySQL?

  2. MySQL INSERT изразите по-бавни ли са в огромни таблици?

  3. MySQL DATETIME - Променете само датата

  4. Съхранение на голям JSON - двоичен или текстов

  5. Mysql:Показва стойностите на колона под друга колона