|
| POSTGRESQL Retour d'expérience |
| Iniciado por aminebenhedi, 30,oct. 2018 22:50 - 2 respuestas |
| |
| | | |
|
| |
Miembro registrado 339 mensajes |
|
| Publicado el 30,octubre 2018 - 22:50 |
Bonjour,
Je suis en train de découvrir PostgreSQL vu les mauvaises performances de HFSQL. Je voudrais savoir comment faire 1) le blocage d'un enregistrement 2) le reindex des tables 3) la sauvegarde la BD
Merci d'avance. Amine. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes |
|
| Publicado el 31,octubre 2018 - 00:41 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 326 mensajes |
|
| Publicado el 31,octubre 2018 - 15:33 |
Bonjour.
Pour le blocage : https://docs.postgresql.fr/10/explicit-locking.html
L'extrait de la documentation concernant un enregistrement est :
13.3.2. Verrous au niveau ligne
En plus des verrous au niveau table, il existe des verrous au niveau ligne, qui peuvent être des verrous exclusifs ou partagés. Un verrou exclusif sur une ligne spécifique est automatiquement acquis lorsque la ligne est mise à jour ou supprimée. Le verrou est détenu jusqu'à la fin de la transaction, que ce soit une validation ou une annulation, de la même façon que les verrous de niveau table. Les verrous au niveau ligne n'affectent pas les requêtes sur les données ; ils bloquent seulement les modifieurs d'une même ligne.
Pour acquérir un verrou exclusif au niveau ligne sans modifier réellement la ligne, sélectionnez la ligne avec SELECT FOR UPDATE. Notez qu'une fois le verrou au niveau ligne acquis, la transaction pourrait mettre à jour la ligne plusieurs fois sans peur des conflits.
Pour acquérir un verrou partagé niveau ligne sur une ligne spécifique, sélectionnez la ligne avec SELECT FOR SHARE. Un verrou partagé n'empêche pas les autres transactions d'obtenir le même verrou partagé. Néanmoins, aucune transaction n'est autorisée à mettre à jour, supprimer ou verrouiller exclusivement une ligne dont une autre transaction a obtenu un verrou partagé. Toute tentative de le faire bloque tant que les verrous partagés n'ont pas été enlevés.
PostgreSQL™ ne garde en mémoire aucune information sur les lignes modifiées, il n'y a donc aucune limite sur le nombre de lignes verrouillées à un moment donné. Néanmoins, verrouiller une ligne peut causer une écriture disque ; ainsi, par exemple, SELECT FOR UPDATE modifie les lignes sélectionnées pour les marquer verrouillées et cela aboutit à des écritures disques.
En plus des verrous tables et lignes, les verrous partagés/exclusifs sur les pages sont utilisés pour contrôler la lecture et l'écriture des pages de table dans l'ensemble des tampons partagées. Ces verrous sont immédiatement relâchés une fois la ligne récupérée ou mise à jour. Les développeurs d'applications ne sont normalement pas concernés par les verrous au niveau page mais nous les mentionnons dans un souci d'exhaustivité.
Bon courage. Michel. |
| |
| |
| | | |
|
| | | | |
| | |
|