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.

COPYOperasi bersamaan ke dalam tabel yang sama

Transaksi 1 salinan baris ke dalam LISTING tabel:

begin; copy listing from ...; end;

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

begin; [waits] copy listing from ; end;

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

DELETEOperasi 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 UPDATE perintah ke tabel yang sama, bukan DELETE perintah.

Transaksi bersamaan dengan campuran operasi baca dan tulis

Dalam contoh ini, transaksi 1 menghapus baris dari USERS tabel, memuat ulang tabel, menjalankan kueri COUNT (*), dan kemudianANALYZE, 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 USERS tabel, 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. COUNTKuerinya akan mengembalikan hitungan berdasarkan beban yang telah diselesaikan.