Transaksi (Azure Synapse Analytics)

Berlaku untuk:yes Azure Synapse Analytics Analytics yesPlatform System (PDW)

Transaksi adalah sekelompok satu atau beberapa pernyataan database yang sepenuhnya diterapkan atau sepenuhnya digulung balik. Setiap transaksi bersifat atomik, konsisten, terisolasi, dan tahan lama (ACID). Jika transaksi berhasil, semua pernyataan di dalamnya akan diterapkan. Jika transaksi gagal, itu setidaknya salah satu pernyataan dalam grup gagal, maka seluruh grup digulung balik.

Awal dan akhir transaksi tergantung pada pengaturan AUTOCOMMIT dan pernyataan BEGIN TRANSACTION, COMMIT, dan ROLLBACK. Azure Synapse Analytics mendukung jenis transaksi berikut:

  • Transaksi eksplisit dimulai dengan pernyataan BEGIN TRANSACTION dan diakhiri dengan pernyataan COMMIT atau ROLLBACK.

  • Transaksi penerapan otomatis dimulai secara otomatis dalam sesi dan tidak dimulai dengan pernyataan BEGIN TRANSACTION. Saat pengaturan AUTOCOMMIT AKTIF, setiap pernyataan berjalan dalam transaksi dan tidak diperlukan COMMIT atau ROLLBACK eksplisit. Ketika pengaturan AUTOCOMMIT NONAKTIF, pernyataan COMMIT atau ROLLBACK diperlukan untuk menentukan hasil transaksi. Di Azure Synapse Analytics, transaksi autocommit dimulai segera setelah pernyataan COMMIT atau ROLLBACK, atau setelah pernyataan SET AUTOCOMMIT OFF.

Topic link iconKonvensi Sintaks T-SQL (Transact-SQL)

Sintaks

BEGIN TRANSACTION [;]  
COMMIT [ TRAN | TRANSACTION | WORK ] [;]  
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]  
SET AUTOCOMMIT { ON | OFF } [;]  
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]  

Argumen

BEGIN TRANSACTION
Menandai titik awal transaksi eksplisit.

COMMIT [ WORK ]
Menandai akhir transaksi eksplisit atau autocommit. Pernyataan ini menyebabkan perubahan transaksi diterapkan secara permanen pada database. Pernyataan COMMIT identik dengan COMMIT WORK, COMMIT TRAN, dan COMMIT TRANSACTION.

ROLLBACK [ WORK ]
Mengembalikan transaksi ke awal transaksi. Tidak ada perubahan untuk transaksi yang diterapkan pada database. Pernyataan ROLLBACK identik dengan ROLLBACK WORK, ROLLBACK TRAN, dan ROLLBACK TRANSACTION.

ATUR AUTOCOMMIT { ON | NONAKTIF }
Menentukan bagaimana transaksi dapat dimulai dan berakhir.

AKTIF
Setiap pernyataan berjalan di bawah transaksinya sendiri dan tidak diperlukan pernyataan COMMIT atau ROLLBACK eksplisit. Transaksi eksplisit diizinkan saat AUTOCOMMIT AKTIF.

TIDAK AKTIF
Azure Synapse Analytics secara otomatis memulai transaksi saat transaksi belum berlangsung. Setiap pernyataan berikutnya dijalankan sebagai bagian dari transaksi dan COMMIT atau ROLLBACK diperlukan untuk menentukan hasil transaksi. Segera setelah transaksi berkomitmen atau kembali dalam mode operasi ini, mode tetap NONAKTIF, dan Azure Synapse Analytics memulai transaksi baru. Transaksi eksplisit tidak diizinkan saat AUTOCOMMIT NONAKTIF.

Jika Anda mengubah pengaturan AUTOCOMMIT dalam transaksi aktif, pengaturan tersebut memang memengaruhi transaksi saat ini dan tidak memengaruhi hingga transaksi selesai.

Jika AUTOCOMMIT AKTIF, menjalankan pernyataan SET AUTOCOMMIT ON lain tidak berpengaruh. Demikian juga, jika AUTOCOMMIT NONAKTIF, menjalankan SET AUTOCOMMIT OFF lain tidak berpengaruh.

SET IMPLICIT_TRANSACTIONS { ON | NONAKTIF }
Ini mengalihkan mode yang sama dengan SET AUTOCOMMIT. Saat AKTIF, SET IMPLICIT_TRANSACTIONS mengatur koneksi ke dalam mode transaksi implisit. Saat NONAKTIF, koneksi akan dikembalikan ke mode autocommit. Untuk informasi selengkapnya, lihat MENGATUR IMPLICIT_TRANSACTIONS (Transact-SQL).

Izin

Tidak ada izin khusus yang diperlukan untuk menjalankan pernyataan terkait transaksi. Izin diperlukan untuk menjalankan pernyataan dalam transaksi.

Penanganan Kesalahan

Jika COMMIT atau ROLLBACK dijalankan dan tidak ada transaksi aktif, kesalahan akan muncul.

Jika BEGIN TRANSACTION dijalankan saat transaksi sudah berlangsung, kesalahan akan muncul. Ini dapat terjadi jika BEGIN TRANSACTION terjadi setelah pernyataan BEGIN TRANSACTION yang berhasil atau ketika sesi berada di bawah SET AUTOCOMMIT OFF.

Jika kesalahan selain kesalahan pernyataan run-time mencegah keberhasilan penyelesaian transaksi eksplisit, Azure Synapse Analytics secara otomatis mengembalikan transaksi dan membebaskan semua sumber daya yang disimpan oleh transaksi. Misalnya, jika koneksi jaringan klien ke instans Azure Synapse Analytics rusak atau klien keluar dari aplikasi, setiap transaksi yang tidak dilakukan untuk koneksi digulung balik saat jaringan memberi tahu instans jeda.

Jika kesalahan pernyataan run-time terjadi dalam batch, Azure Synapse Analytics berperilaku konsisten dengan SQL ServerXACT_ABORT diatur ke AKTIF dan seluruh transaksi digulung balik. Untuk informasi selengkapnya tentang pengaturan XACT_ABORT , lihat MENGATUR XACT_ABORT (Transact-SQL).

Keterangan Umum

Sesi hanya dapat menjalankan satu transaksi pada waktu tertentu; titik simpan dan transaksi berlapis tidak didukung.

Programmer SQL bertanggung jawab untuk mengeluarkan COMMIT hanya pada titik ketika semua data yang direferensikan oleh transaksi secara logis benar.

Ketika sesi dihentikan sebelum transaksi selesai, transaksi digulung balik.

Mode transaksi dikelola pada tingkat sesi. Misalnya, jika satu sesi memulai transaksi eksplisit atau mengatur AUTOCOMMIT ke NONAKTIF, atau mengatur IMPLICIT_TRANSACTIONS ke AKTIF, itu tidak berpengaruh pada mode transaksi sesi lain.

Batasan dan Pembatasan

Anda tidak dapat mengembalikan transaksi setelah pernyataan COMMIT dikeluarkan karena modifikasi data telah dibuat sebagai bagian permanen dari database.

Perintah CREATE DATABASE (Azure Synapse Analytics) dan DROP DATABASE (Transact-SQL) tidak dapat digunakan di dalam transaksi eksplisit.

Azure Synapse Analytics tidak memiliki mekanisme berbagi transaksi. Ini menyiratkan bahwa pada titik waktu tertentu, hanya satu sesi yang dapat melakukan pekerjaan pada transaksi apa pun dalam sistem.

Perilaku Penguncian

Azure Synapse Analytics menggunakan penguncian untuk memastikan integritas transaksi dan mempertahankan konsistensi database saat beberapa pengguna mengakses data secara bersamaan. Penguncian digunakan oleh transaksi implisit dan eksplisit. Setiap transaksi meminta kunci dari berbagai jenis pada sumber daya, seperti tabel atau database tempat transaksi bergantung. Semua kunci Azure Synapse Analytics adalah tingkat tabel atau lebih tinggi. Kunci memblokir transaksi lain agar tidak memodifikasi sumber daya dengan cara yang akan menyebabkan masalah untuk transaksi yang meminta kunci. Setiap transaksi membebaskan kuncinya ketika tidak lagi memiliki dependensi pada sumber daya yang terkunci; transaksi eksplisit mempertahankan kunci hingga transaksi selesai ketika dilakukan atau digulung balik.

Contoh: Azure Synapse Analytics dan Analytics Platform System (PDW)

J. Menggunakan transaksi eksplisit

BEGIN TRANSACTION;  
DELETE FROM HumanResources.JobCandidate  
    WHERE JobCandidateID = 13;  
COMMIT;  

B. Menggulung balik transaksi

Contoh berikut menunjukkan efek mengembalikan transaksi. Dalam contoh ini, pernyataan ROLLBACK akan mengembalikan pernyataan INSERT, tetapi tabel yang dibuat masih akan ada.

CREATE TABLE ValueTable (id INT);  
BEGIN TRANSACTION;  
       INSERT INTO ValueTable VALUES(1);  
       INSERT INTO ValueTable VALUES(2);  
ROLLBACK;  

C. Mengatur AUTOCOMMIT

Contoh berikut mengatur pengaturan AUTOCOMMIT ke ON.

SET AUTOCOMMIT ON;  

Contoh berikut mengatur pengaturan AUTOCOMMIT ke OFF.

SET AUTOCOMMIT OFF;  

D. Menggunakan transaksi multi-pernyataan implisit

SET AUTOCOMMIT OFF;  
CREATE TABLE ValueTable (id INT);  
INSERT INTO ValueTable VALUES(1);  
INSERT INTO ValueTable VALUES(2);  
COMMIT;  

Lihat juga

SET IMPLICIT_TRANSACTIONS (Transact-SQL)
ATUR TINGKAT ISOLASI TRANSAKSI (Transact-SQL)
@@TRANCOUNT (T-SQL)