Transaksi

Pengantar Redshift

Jason Myers

Principal Engineer

Alasan menggunakan transaksi

SELECT name,
       priority,
  FROM data_log
       -- SYSDATE = 2024-02-07 00:17:24.259227
 WHERE intake_ts < SYSDATE;

SELECT name,
       data_size,
  FROM data_details
       -- SYSDATE = 2024-02-07 00:18:04.830527
 WHERE current_intake_date < SYSDATE;
Pengantar Redshift

Contoh pengelompokan pernyataan

data_intake

name priority
idaho_monitoring_locations 1
idaho_samples 2
idaho_site_id 3
UPDATE data_intake 
   SET priority=1 
 WHERE name='idaho_samples';

UPDATE data_intake 
   SET priority=2 
 WHERE name='idaho_monitoring_locations';
Pengantar Redshift

Hasil tabel dengan galat

data_intake

name priority
idaho_monitoring_locations 1
idaho_samples 1
idaho_site_id 3
Pengantar Redshift

Keunggulan dan perhatian dalam transaksi

  • Hasil data konsisten
  • Mensyaratkan sukses atau gagal untuk satu grup kueri
  • Operasi bersamaan

Perilaku Eksekusi Default

  • Setiap pernyataan SQL adalah satu transaksi!

Transaksi memengaruhi beberapa fungsi

  • Ditentukan saat transaksi dimulai dan tetap sama
    • SYSDATE, TIMESTAMP, CURRENT_DATE

Beberapa fungsi melewati Transaksi

  • Ditentukan saat tiap pernyataan dijalankan
    • GETDATE, TIMEOFDAY
Pengantar Redshift

Struktur Transaksi

  • Dibuka dengan BEGIN; atau START TRANSACTION;
  • Berisi satu atau lebih pernyataan SQL dengan titik koma setelah tiap pernyataan
  • Ditutup dengan END; atau COMMIT;
  • CATATAN: Titik koma penting
BEGIN;

query1; query2;
END;
Pengantar Redshift

Mendapatkan hasil kueri yang konsisten

-- Mulai transaksi
BEGIN;
SELECT name,
       priority,
  FROM data_log
       -- SYSDATE = 2024-02-07 00:17:24.259227
 WHERE intake_ts < SYSDATE;

SELECT name,
       data_size,
  FROM data_details
       -- SYSDATE = 2024-02-07 00:17:24.259227
 WHERE current_intake_date < SYSDATE;
-- Akhiri transaksi
END;
Pengantar Redshift

Perilaku fungsi dalam transaksi

-- Mulai transaksi
BEGIN;
SELECT name,
       priority,
  FROM data_intake
       -- GETDATE = 2024-02-07 00:17:24.259227
 WHERE data_intake_ts < GETDATE();

 SELECT name,
       data_size,
  FROM data_details
       -- GETDATE = 2024-02-07 00:18:44.830527
 WHERE current_intake_date < GETDATE();
-- Akhiri transaksi
END;
Pengantar Redshift

Ayo berlatih!

Pengantar Redshift

Preparing Video For Download...