MariaDB implémente deux types de verrouillage, le verrouillage pessimiste et le verrouillage optimiste, qui sont utilisés pour gérer l’accès concurrent à des ressources partagées dans une base de données. Le type de verrouillage utilisé dépend des besoins spécifiques de votre application.
1. Verrouillage pessimiste: Ce type de verrouillage suppose qu’il y aura un conflit et verrouille la ressource dès le début. Ainsi, lorsque la transaction a lieu, aucune autre transaction ne peut modifier la même ressource jusqu’à ce que la première transaction soit terminée. Pour gérer ce verrouillage avec MariaDB, vous pouvez utiliser des transactions et des verrous explicites (par exemple, SELECT FOR UPDATE).
Voici comment vous pouvez le faire:
```
START TRANSACTION;
SELECT * FROM table_name WHERE id=1 FOR UPDATE;
… // opération d’écriture
COMMIT;
```
1. Verrouillage optimiste : C’est l’opposé du verrouillage pessimiste. Il suppose qu’il n’y aura pas de conflit et ne verrouille la ressource qu’au moment de la mise à jour ou de l’insertion. Si un autre utilisateur modifie la même ressource pendant ce temps, la transaction échoue. MariaDB ne supporte pas directement le verrouillage optimiste, mais vous pouvez le gérer au niveau de l’application en utilisant une colonne de version dans vos tables.
Voici un exemple:
```
START TRANSACTION;
SELECT * FROM table_name WHERE id=1;
… // Vérifier la colonne de version
UPDATE table_name SET column1=value1, version_column = version_column + 1 WHERE id=1 AND version_column = version précédemment reçue ;
COMMIT;
```
Dans l’exemple ci-dessus, si la version a été modifiée par une autre transaction entre la sélection et la mise à jour, la mise à jour échouera car la condition WHERE échouera.
N’oubliez pas que choisir entre le verrouillage optimiste et pessimiste dépend de votre cas d’utilisation spécifique, comme le volume de transactions, le nombre de conflits attendus, etc.