sql >> Database teknologi >  >> RDS >> Mysql

Rækkeversionering til MySql

Mysql har ikke en indbygget rowversioning-mekanisme. Selvom brugen af ​​en tidsstempeltype kan virke OK, kommer du til at forfejle dette for forespørgsler, der opdaterer flere rækker samtidigt og tager længere tid end opløsningen af ​​tidsstemplet, da den tildelte værdi er baseret på begyndelsen af ​​ændringen og ikke slutningen af ændringen.

Så hvis din opdateringsforespørgsel påvirker 100 rækker, vil alle rækker have det samme tidsstempel (f.eks. en værdi på 2015-10-28 09:47:10.123456). Men det er muligt, at rækkerne ikke bliver færdigskrevet før 2015-10-28 09:47:10.654321.

Hvis du separat leder efter alle ændrede rækker baseret på et andet tidsstempel (f.eks. 2015-10-28 09:47:10.500000), vil du ikke få de resultater, du ønsker. Og afhængigt af din kode kan du gå glip af de 100 ændrede rækker.

Det er den kendsgerning, at ændringer til rækker nu kan have et tidsstempel tidligere, at du ikke bare kan sammenligne 2 tidsstempler for at få alle ændrede rækker.



  1. Forstå resultaterne af Execute Explain Plan i Oracle SQL Developer

  2. MySQL CURRENT_TIMESTAMP ved oprettelse og ved opdatering

  3. ORACLE 11g ufølsom overfor store og små bogstaver som standard

  4. PHP Roter og føj til et array