Exemples d’écritures simultanées - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

Exemples d’écritures simultanées

Les exemples de pseudo-code suivants montrent comment les transactions se poursuivent ou attendent quand elles sont exécutées simultanément.

Exemples d’écritures simultanées avec isolement sérialisable

Opérations COPY simultanées sur la même table avec isolement sérialisable

La transaction 1 copie les lignes dans la table LISTING :

begin; copy listing from ...; end;

La transaction 2 commence simultanément dans une séance distincte et tente de copier de nouvelles lignes dans la table LISTING. La transaction 2 doit attendre que la transaction 1 libère le verrou en écriture sur la table LISTING, puis peut poursuivre.

begin; [waits] copy listing from ; end;

Le même comportement se produirait si l’une d’une transactions ou les deux contenaient une commande INSERT au lieu d’une commande COPY.

Opérations DELETE simultanées de la même table avec isolement sérialisable

La transaction 1 supprime des lignes d’une table :

begin; delete from listing where ...; end;

La transaction 2 commence simultanément et tente de supprimer des lignes de la même table. Elle réussit, car elle attend que la transaction 1 ait terminé avant de tenter de supprimer des lignes.

begin [waits] delete from listing where ; end;

Le même comportement se produit si l’une des transactions ou les deux contiennent une commande UPDATE sur la même table au lieu d’une commande DELETE.

Transactions simultanées avec un mélange d’opérations de lecture et d’écriture avec isolement sérialisable

Dans cet exemple, la transaction 1 supprime des lignes de la table USERS, recharge la table, exécute une requête COUNT(*), puis une commande ANALYZE, avant de valider :

begin; delete one row from USERS table; copy ; select count(*) from users; analyze ; end;

Pendant ce temps, la transaction 2 démarre. Cette transaction tente de copier les lignes supplémentaires dans la table USERS, analyse la table, puis exécute la même requête COUNT(*) comme première transaction :

begin; [waits] copy users from ...; select count(*) from users; analyze; end;

La deuxième transaction réussit, car elle doit attendre que la première soit terminée. Sa requête COUNT renvoie le nombre en fonction de la charge qu’il a terminée.

Exemples d’écritures simultanées avec isolement d’instantané

Opérations COPY simultanées sur la même table avec isolement d’instantané

La transaction 1 copie les lignes dans la table LISTING :

begin; copy listing from ...; end;

La transaction 2 commence simultanément dans une séance distincte et tente de copier de nouvelles lignes dans la table LISTING. La transaction 2 peut progresser simultanément jusqu’à ce que l’une des transactions ait besoin d’écrire des données dans la table cible listing, point auquel elle s’exécutera de manière séquentielle.

begin; //When the COPY statement from T1 needs to write data to the table, the COPY statement from T2 waits. copy listing from ...; end;

Le même comportement se produirait si l’une d’une transactions ou les deux contenaient une commande INSERT au lieu d’une commande COPY.

Opérations DELETE simultanées de la même table avec isolement d’instantané

Les opérations DELETE ou UPDATE simultanées à partir de la même table avec isolement d’instantané s’exécutent de la même manière que les opérations exécutées avec isolement sérialisable.

Transactions simultanées avec un mélange d’opérations de lecture et d’écriture avec isolement d’instantané

Les transactions simultanées exécutées avec des combinaisons d’opérations avec isolement d’instantané s’exécutent de la même manière que les transactions avec des combinaisons d’opérations exécutées avec une isolement sérialisable.