sql >> Database >  >> RDS >> Mysql

Hoe voorkom je dat geselecteerde found_rows breken onder raceomstandigheden?

Er zijn bepaalde problemen als het gaat om transacties en verschillende isolatieniveaus voorkomen dat er meer of minder van worden gemaakt. Ik heb dit beschreven in mijn antwoord hier .
Een probleem zoals de phantom read bijvoorbeeld, kan het resultaat van een selectie beïnvloeden, zoals je het doet, ja. Maar het resultaat van SQL_CALC_FOUND_ROWS wordt opgeslagen zodra de query is voltooid en gaat verloren zodra u een andere query uitvoert in dezelfde sessie. Dat is het belangrijke deel. SQL_CALC_FOUND_ROWS is sessiegebonden . Het is onmogelijk dat het resultaat van een andere zoekopdracht in een andere sessie in uw huidige sessie wordt opgeslagen. Het gebruik van SQL_CALC_FOUND_ROWS is niet onderworpen aan racevoorwaarden. Het resultaat van de SELECT-query, ja, maar niet het resultaat van FOUND_ROWS(). Verwar dit niet.




  1. Beperken met voorwaardelijke waardecontrole in MySQL

  2. Het implementeren van Twitter en Facebook-achtige hashtags

  3. Beperking van algemene criteria in Hibernate voor alle query's voor alle tabellen

  4. Lob-segmenten (SYS_LOB) in orakel begrijpen?