Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Esempi di scrittura simultanea
I seguenti esempi di pseudo codice dimostrano come, quando vengono eseguite simultaneamente, le transazioni procedono o attendono.
Esempi di scrittura simultanea con isolamento serializzabile
Operazioni COPY simultanee nella stessa tabella con isolamento serializzabile
La transazione 1 copia le righe nella tabella LISTING:
begin; copy listing from ...; end;
La transazione 2 inizia simultaneamente in una sessione separata e prova a copiare più righe nella tabella LISTING. La transazione 2 deve attendere che la transazione 1 rilasci il blocco di scrittura sulla tabella LISTING, quindi può procedere.
begin; [waits] copy listing from ; end;
Lo stesso comportamento si verificherebbe se una o entrambe le transazioni contenessero un comando INSERT anziché un comando COPY.
Operazioni DELETE simultanee nella stessa tabella con isolamento serializzabile
La transazione 1 elimina le righe da una tabella:
begin; delete from listing where ...; end;
La transazione 2 inizia simultaneamente e prova a eliminare le righe dalla stessa tabella. Avrà esito positivo perché attende il completamento della transazione 1 prima di provare eliminare le righe.
begin [waits] delete from listing where ; end;
Lo stesso comportamento si verificherebbe se una o entrambe le transazioni contenessero un comando UPDATE nella stessa tabella anziché un comando DELETE.
Transazioni simultanee con una combinazione di operazioni di lettura e scrittura e isolamento serializzabile
In questo esempio, la transazione 1 elimina le righe dalla tabella USERS, ricarica la tabella, esegue una query su COUNT (*) e quindi ANALYZE prima di eseguire il commit:
begin; delete one row from USERS table; copy ; select count(*) from users; analyze ; end;
Allo stesso tempo, inizia la transazione 2. Questa transazione prova a copiare righe aggiuntive nella tabella USERS, ad analizzare la tabella e quindi a eseguire la stessa query su COUNT (*) come la prima transazione:
begin; [waits] copy users from ...; select count(*) from users; analyze; end;
La seconda transazione avrà esito positivo perché deve attendere il completamento della prima. La sua query su COUNT restituirà il conteggio in base al caricamento che ha completato.
Esempi di scrittura simultanea con isolamento degli snapshot
Operazioni simultanee di COPY nella stessa tabella con isolamento degli snapshot
La transazione 1 copia le righe nella tabella LISTING:
begin; copy listing from ...; end;
La transazione 2 inizia simultaneamente in una sessione separata e prova a copiare più righe nella tabella LISTING. La transazione 2 può procedere simultaneamente fino a quando una delle due transazioni non deve scrivere i dati nella tabella di destinazione listing, dopodiché vengono eseguite in sequenza.
begin; //When the COPY statement from T1 needs to write data to the table, the COPY statement from T2 waits. copy listing from ...; end;
Lo stesso comportamento si verificherebbe se una o entrambe le transazioni contenessero un comando INSERT anziché un comando COPY.
Operazioni DELETE simultanee nella stessa tabella con isolamento degli snapshot
Le operazioni DELETE o UPDATE simultanee nella stessa tabella con l’isolamento degli snapshot vengono eseguite allo stesso modo delle operazioni eseguite con l’isolamento serializzabile.
Transazioni simultanee con una combinazione di operazioni di lettura e scrittura e l’isolamento degli snapshot
Le transazioni simultanee eseguite con combinazioni di operazioni con l’isolamento degli snapshot vengono eseguite allo stesso modo delle transazioni con combinazioni di operazioni eseguite con l’isolamento serializzabile.