View a markdown version of this page

Contoh penulisan bersamaan - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Contoh penulisan bersamaan

Contoh kode semu berikut menunjukkan bagaimana transaksi berjalan atau menunggu ketika dijalankan secara bersamaan.

Contoh penulisan bersamaan dengan isolasi yang dapat diserialkan

Operasi COPY bersamaan ke dalam tabel yang sama dengan isolasi yang dapat diserialkan

Transaksi 1 menyalin baris ke tabel LISTING:

begin; copy listing from ...; end;

Transaksi 2 dimulai secara bersamaan dalam sesi terpisah dan mencoba menyalin lebih banyak baris ke tabel LISTING. Transaksi 2 harus menunggu sampai 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 dengan isolasi yang dapat diserialkan

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 alih-alih perintah DELETE.

Transaksi bersamaan dengan campuran operasi baca dan tulis dengan isolasi yang dapat diserialkan

Dalam contoh ini, transaksi 1 menghapus baris dari tabel USERS, memuat ulang tabel, menjalankan kueri COUNT (*), dan kemudian ANALYSIS, 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 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.

Contoh penulisan bersamaan dengan isolasi snapshot

Operasi COPY bersamaan ke tabel yang sama dengan isolasi snapshot

Transaksi 1 menyalin baris ke tabel LISTING:

begin; copy listing from ...; end;

Transaksi 2 dimulai secara bersamaan dalam sesi terpisah dan mencoba menyalin lebih banyak baris ke tabel LISTING. Transaksi 2 dapat berlangsung secara bersamaan sampai salah satu transaksi perlu menulis data ke tabel targetlisting, di mana mereka akan berjalan secara berurutan.

begin; //When the COPY statement from T1 needs to write data to the table, the COPY statement from T2 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 dengan isolasi snapshot

Operasi DELETE atau UPDATE bersamaan dari tabel yang sama dengan isolasi snapshot berjalan sama seperti operasi yang dijalankan dengan isolasi yang dapat diserialisasi.

Transaksi bersamaan dengan campuran operasi baca dan tulis dengan isolasi snapshot

Transaksi bersamaan yang dijalankan dengan campuran operasi dengan isolasi snapshot berjalan sama seperti transaksi dengan campuran operasi yang dijalankan dengan isolasi yang dapat diserialisasi.