Transaksi (Azure Synapse Analytics)

Berlaku untuk: Azure Synapse Analytics Sistem Platform Analitik (PDW)

Transaksi adalah sekelompok dari 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, 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. Ketika 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.

Ikon tautan topikKonvensi Sintaks Transact-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 ke 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 | OFF }
Menentukan bagaimana transaksi dapat dimulai dan berakhir.

AKTIF
Setiap pernyataan berjalan di bawah transaksinya sendiri dan tidak ada pernyataan COMMIT atau ROLLBACK eksplisit yang diperlukan. 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 diterapkan atau digulung balik 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 mempengaruhi 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 | OFF }
Ini mengalihkan mode yang sama dengan SET AUTOCOMMIT. Saat AKTIF, SET IMPLICIT_TRANSACTIONS mengatur koneksi ke mode transaksi implisit. Saat NONAKTIF, koneksi akan kembali ke mode autocommit. Untuk informasi selengkapnya, lihat SET 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 Server XACT_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 penyimpanan 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 and Analytics Platform System (PDW)

J. Menggunakan transaksi eksplisit

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

B. Mengembalikan transaksi

Contoh berikut menunjukkan efek menggulung balik 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)
SET TINGKAT ISOLASI TRANSAKSI (Transact-SQL)
@@TRANCOUNT (Transact-SQL)