Contoh tulis bersamaan - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh tulis bersamaan

Contoh pseudo-code berikut menunjukkan bagaimana transaksi berjalan atau menunggu saat dijalankan secara bersamaan.

Operasi COPY bersamaan ke dalam tabel yang sama

Transaksi 1 salinan baris ke dalam tabel LISTING:

begin; copy listing from ...; end;

Transaksi 2 dimulai secara bersamaan dalam sesi terpisah dan mencoba menyalin lebih banyak baris ke dalam tabel LISTING. Transaksi 2 harus menunggu hingga transaksi 1 melepaskan kunci tulis pada tabel LISTING, kemudian dapat dilanjutkan.

begin; [waits] copy listing from ; end;

Perilaku yang sama akan terjadi jika salah satu atau kedua transaksi berisi perintah INSERT alih-alih perintah COPY.

Operasi DELETE bersamaan dari tabel yang sama

Transaksi 1 menghapus baris dari tabel:

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

Transaksi 2 dimulai secara bersamaan dan mencoba menghapus baris dari tabel yang sama. Ini akan berhasil karena menunggu transaksi 1 selesai sebelum mencoba menghapus baris.

begin [waits] delete from listing where ; end;

Perilaku yang sama akan terjadi jika salah satu atau kedua transaksi berisi perintah UPDATE ke tabel yang sama, bukan perintah DELETE.

Transaksi bersamaan dengan campuran operasi baca dan tulis

Dalam contoh ini, transaksi 1 menghapus baris dari tabel USERS, memuat ulang tabel, menjalankan kueri COUNT (*), dan kemudian ANALISIS, sebelum melakukan:

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

Sementara itu, transaksi 2 dimulai. Transaksi ini mencoba menyalin baris tambahan ke dalam tabel USERS, menganalisis tabel, dan kemudian menjalankan kueri COUNT (*) yang sama dengan transaksi pertama:

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

Transaksi kedua akan berhasil karena harus menunggu yang pertama selesai. Kueri COUNT-nya akan mengembalikan hitungan berdasarkan beban yang telah diselesaikan.