Mysql
 sql >> Base de données >  >> RDS >> Mysql

Gestion des versions de ligne pour MySql

Mysql n'a pas de mécanisme intégré de rowversioning. Bien que l'utilisation d'un type d'horodatage puisse sembler OK, vous allez tomber dans le piège pour les requêtes qui mettent à jour plusieurs lignes simultanément et prennent plus de temps que la résolution de l'horodatage car la valeur attribuée est basée sur le début du changement et non sur la fin de le changement.

Ainsi, si votre requête de mise à jour affecte 100 lignes, toutes les lignes auront le même horodatage (disons une valeur de 2015-10-28 09:47:10.123456). Mais, il est possible que les lignes ne soient pas écrites avant le 2015-10-28 09:47:10.654321.

Si, séparément, vous recherchez toutes les lignes modifiées en fonction d'un autre horodatage (par exemple, 2015-10-28 09:47:10.500000), vous n'obtiendrez pas les résultats souhaités. Et selon votre code, vous risquez de manquer les 100 lignes modifiées.

C'est le fait que les modifications apportées aux lignes maintenant peuvent avoir un horodatage dans le passé que vous ne pouvez pas simplement comparer 2 horodatages pour obtenir toutes les lignes modifiées.