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

Как да предотвратим прекъсване на избрани found_rows при условия на състезание?

Има определени проблеми, когато става въпрос за транзакции и различните нива на изолация предотвратяват повече или по-малко от тях. Описах това в отговора си тук .
Проблем като фантомното четене например може да повлияе на резултата от избор, както го правите, да. Но резултатът от SQL_CALC_FOUND_ROWS се съхранява веднага щом заявката приключи и се губи веднага щом изпълните друга заявка в същата сесия. Това е важната част. SQL_CALC_FOUND_ROWS е обвързан със сесия . Няма начин резултатът от друга заявка в друга сесия да се съхранява във вашата текуща сесия. Използването на SQL_CALC_FOUND_ROWS не е предмет на условията на състезанието. Резултатът от заявката SELECT, да, но не и резултатът от FOUND_ROWS(). Не бъркайте това.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на оператор EXCEPT във версия на MySql 5.1

  2. mysqldump:Грешка 2020:Получих пакет, по-голям от 'max_allowed_packet' байтове при изхвърляне на таблица

  3. Мога ли да използвам ON DUPLICATE KEY UPDATE със заявка INSERT, използвайки опцията SET?

  4. Копирайте стойности от една колона в друга в същата таблица

  5. EEE MMM dd HH:mm:ss ZZZ yyyy формат на датата в java.sql.Date