

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esempi di scrittura simultanea
<a name="r_Serializable_isolation_example"></a>

I seguenti esempi di pseudo codice dimostrano come, quando vengono eseguite simultaneamente, le transazioni procedono o attendono.

## Esempi di scrittura simultanea con isolamento serializzabile
<a name="r_Serializable_isolation_example-serializable"></a>

### Operazioni COPY simultanee nella stessa tabella con isolamento serializzabile
<a name="r_Serializable_isolation_example-concurrent-copy-operations-into-the-same-table"></a>

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
<a name="r_Serializable_isolation_example-concurrent-delete-operations-from-the-same-table"></a>

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
<a name="r_Serializable_isolation_example-concurrent-transactions"></a>

In questo esempio, la transazione 1 elimina le righe dalla tabella USERS, ricarica la tabella, esegue una query su COUNT (\$1) 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 (\$1) 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
<a name="r_Serializable_isolation_example-snapshot"></a>

### Operazioni simultanee di COPY nella stessa tabella con isolamento degli snapshot
<a name="r_Serializable_isolation_example-concurrent-copy-operations-into-the-same-table-snapshot"></a>

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
<a name="r_Serializable_isolation_example-concurrent-delete-operations-from-the-same-table-snapshot"></a>

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
<a name="r_Serializable_isolation_example-concurrent-transactions-snapshot"></a>

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.