• Tidak ada hasil yang ditemukan

Administrasi Basis Data. Transaksi dan Lock. Yoannita

N/A
N/A
Protected

Academic year: 2021

Membagikan "Administrasi Basis Data. Transaksi dan Lock. Yoannita"

Copied!
28
0
0

Teks penuh

(1)

Administrasi Basis Data

Transaksi dan Lock

(2)

Mengenal Transaksi dan Lock

• Transaksi dan lock dipakai untuk menjamin konsistensi dan integritas data.

• Transaksi adalah sebuah unit kerja logis yang berisi sekumpulan perintah.

• Lock mencegah konflik antarpemakai sehingga seorang user tidak dapat

membaca atau mengubah data yang sedang diubah oleh user lain.

• Transaksi memakai lock untuk mencegah user mengubah data yang sedang dipakai oleh transaksi.

(3)

Mengenal Transaksi dan Lock

• Setiap database SQL Server

mempunyai sebuah log transaksi yang

mencatat semua transaksi dan

modifikasi database yang dibuat oleh

transaksi.

• Log tersebut mendukung 3 operasi :

– Proses Recovery dari transaksi-transaksi tunggal – Proses Recovery semua transaksi yang belum

selesai pada saat SQL Server dimulai

– Mengembalikan database ke keadaan semula setelah terjadi kegagalan

(4)

• Proses Recovery dari transaksi-transaksi

tunggal

– Jika sebuah aplikasi menjalankan

perintah ROLLBACK atua SQL Server

mendeteksi sebuah kesalahan,

record-record dalam log dipakai

untuk kembali ke data sebelum

transaksi dimulai

(5)

• Proses Recovery semua transaksi yang belum selesai pada saat SQL Server dimulai

• Jika SQL Server berhenti tiba-tiba karena sesuatu hal, database mungkin dalam

keadaan sedang mengalami perubahan

yang belum ditulis ke file data. Jika SQL Server dimulai, proses recovery akan dijalankan

pada setiap database. Setiap modifikasi yang dicatat di dalam log dan belum ditulis ke

dalam file data akan dikembalikan ke

keadaan sebelum transaksi dimulai. Hal ini untuk menjaga integritas database.

(6)

• Mengembalikan database ke keadaan semula setelah terjadi kegagalan

• Setelah terjadi kegagalan pada

harddisk, Anda dapat

mengembalikan data pada keadaan

sebelum terjadi kerusakan.

(7)

Log Transaksi

• Log transaksi bukanlah sebuah tabel, tetapi merupakan sebuah file atau beberapa file terpisah dalam database.

• Cache dari log adalah tempat terpisah dari cache buffer untuk page data.

• Bentuk data dalam log tidaklah sama dengan format dari page data.

• Anda dapat membuat log transaksi menjadi beberapa file. Anda juga dapat mengatur pertumbuhan file log sehingga menghindari ukuran log yang tidak terkontrol.

(8)

Log Transaksi

• Log transaksi dapat dianggap sebagai

sebuah string serial dari record-record log. Log Sequence Number (LSN)

mengidentifikasi setiap record log. Record log baru ditulis pada akhir log dengan LSN lebih tinggi dari LSN record sebelumnya. • Record log untuk modifikasi data dapat

berupa operasi yang dilakukan atau data sebelum dan sesudah terjadi perubahan.

(9)

Log Transaksi

• Beberapa operasi yang dicatat di

dalam log transaksi :

• Awal dan akhir transaksi

• Setiap perubahan data (INSERT,

UPDATE, dan DELETE)

• Setiap perluasan alokasi atau

dealokasi.

• Pembuatan dan penghapusan tabel

atau index

(10)

Log Transaksi

• Record-record log disimpan secara

serial sesuai dengan pembuatannya.

• Untuk sebuah transaksi, semua record

log dari transaksi tersebut

dihubungkan dengan menggunakan

pointer agar proses rollback dapat

(11)

Log Transaksi

• Pernyataan ROLLBACK tidak dimasukkan ke dalam log transaksi.

• Setiap transaksi menyediakan sejumlah

tempat di log transaksi agar proses rollback dapat dilakukan. Tempat tersebut akan

dibebaskan pada saat transaksi selesai.

• Jumlah tempat yang disediakan tergantung pada operasi yang dilakukan transaksi,

tetapi pada umumnya sama dengan

jumlah tempat yang dipakai untuk setiap operasi.

(12)

Properti ACID

Sebuah transaksi harus memenuhi empat

kriteria yang dikenal dengan properti ACID. SQL Server menyediakan mekanisme agar sebuah transaksi memenuhi keempat kriteria tersebut :

• Atomicity

• Consistency • Isolation

(13)

Properti ACID (i) : Automicity

• Semua modifikasi dalma sebuah transaksi dianggap sebagai satu kesatuan, semua modifikasi akan berhasil atau semua akan gagal.

• SQL Server memberikan mekanisme yang secara otomatis menentukan apakah

(14)

Properti ACID (i) : Automicity

• Misalnya adalah sebuah transaksi untuk mentransfer uang melalui bank. Ada dua perubahan yang harus dilakukan. Rekening pengirim harus dikurangi dan rekening

penerima harus ditambah. Kedua

modifikasi tersebut merupakai sebuah kesatuan.

• Jika rekening pengirim berhasil dikurangi tetapi rekening penerima tidak berhasil

ditambah, maka transaksi dibatalkan dan data dikembalikan ke keadaan semula.

(15)

Properti ACID(ii) : Consistency

• Semua data dalam keadaan konsisten.

• Integritas data dijaga setelah transaksi

selesai, baik berhasil atau gagal.

Sebelum transaksi dimulai, database

berada dalam keadaan konsisten

artinya index pohon B+ dan list

gandanya dalam keadaan benar.

Setelah transaksi selesai, database juga

dalam keadaan konsisten.

(16)

Properti ACID(iii) : Isolation

• Efek dari setiap transaksi dama dengan jika hanya ada transaksi tersebut di dalam

sistem, modifikasi oleh sebuah transaksi

diisolasi (tidak dipengaruhi) oleh modifikasi yang dilakukan oleh transaksi lain.

• Dengan cara ini sebuah transaksi tidak akan dipengaruhi oleh nilai yang diubah oleh

transaksi lain sampai perubahan selesai (transaksi di-commit).

• Jika sebuah transaksi gagal, modifikasi-modifikasi yang dilakukan dibatalkan dengan proses rollback.

(17)

Properti ACID(iv) : Durability

• Sekali transaksi dicommit (selesai) efek dari transaksi akan bersifat permanen di dalam database.

• Jika SQL Server, sistem operasi, atau sebuah komponen server gagal, secra otomatis

database akan dikembalikan ke keadaan pada saat SQL Server dimulai.

• SQL Server memakai log transaksi untuk mengembalikan ke keadaan semula

(18)

Level-Level Isolasi

• Setting yang menentukan level

sebuah transaksi menerima data yang

tidak konsisten, yaitu tingkatan sebuah

transaksi diisolasi dari transaksi lain.

• Semakin tinggi tingkat isolasi semakin

tinggi keakuratan data. Level-level

isolasi dari terendah sampai tertinggi

adalah : read uncommitted, read

committed, repeatable read,

serializable.

(19)

Level Isolasi : Read Uncommitted

• Level isolasi terendah.

• Pada level ini, transaksi diisolasi hanya

untuk menjadi data yang rusak secara

fisik tidak dapat dibaca

(20)

Level Isolasi : Read Committed

• Level default dari SQL Server

• Pada level ini, pembacaan data

diperbolehkan hanya pada data yang telah di-commit.

• Data yang telah dicommit adalah data yang merupakan bagian permanen dari database.

• Pada level ini data yang masih belum

di-commit (masih dipakai oleh transaksi) tidak dapat dibaca.

(21)

Level Isolasi : Repeatable Read

• Pembacaan berulang pada data

yang dipakai oleh sebuah transaksi

akan menghasilkan data yang sama

(22)

Level Isolasi : Serializable

• Level tertinggi isolasi

• Transaksi terisolasi dari transaksi lainnya

• Hasil yang diperoleh dari transaksi

konkuren pada sebuah database

sama dengan jika transaksi dijalankan

secara serial (satu per satu)

(23)

Level Isolasi

• Level isolasi yang anda pakai menentukan perilaku LOCK untuk semua perintah SELECT yang dilakukan.

• Anda dapat mengubah level isolasi dengan perintah SET TRANSACTION ISOLATION LEVEL • Misalnya mengubah level isolasi menjadi

SERIALIZABLE :

(24)

Level Isolasi

• Sekali anda mengubah level isolasi

untuk sebuah session,

transaksi-transaksi selanjutnya akan melakukan

locking sesuai dengan level isolasinya.

Untuk mengetahui level isolasi yang

sedang dipakai, gunakan perintah :

DBCC USEROPTIONS

(25)

Perilaku Transaksi Konkuren

• Dirty read

• Sebuah pembacaan data dapat

membaca data yang belum di-commit. Dirty read terjadi pada saat sebuah

transaksi mengubah data dan transaksi berikutnya membaca data yang diubah sebelum transaksi selesai (commit). Jika transaksi pertama membatalkan

perubahan, transaksi kedua membaca data yang tidak ada di dalam database,

karena perubahan dibatalkan oleh transaksi yang mengubah data.

(26)

Perilaku Transaksi Konkuren

• Nonrepeatable read

• Hal ini terjadi pada saat sebuah baris

dibaca lebih dari sekali dalam sebuah

transaksi, di antara beberapa

pembacaan, transaksi lain mengubah

baris tersebut. Oleh karena transaksi

pertama membaca ulang dengan

data yang berbeda, hasilnya tidak

berulang dalam transaksi tersebut.

(27)

Perilaku Transaksi Konkuren

• Phantom Read

• Pembacaan yang terjadi pada saat sebuah transaksi mencoba membaca sebuah data yang tidak ada pada saat transaksi dimulai, tetapi data tersebut ditambahkan oleh

transaksi kedua sebelum transaksi pertama selesai. Jika kemudian transaksi pertama mencari data tersebut, data tiba-tiba

ditemukan padahal sebelumnya tidak ada. Data tersebut disebut data phantom.

(28)

Dirty Read Nonrepeatable Read Phantom Read Read uncommitted Ya Ya Ya

Read committed Tidak Ya Ya

Repeatable read

Tidak Ya Tidak

Referensi

Dokumen terkait

Pada penelitian sebelumnya, data tersebut sudah dilakukan tahap pembersihan data, yaitu apabila transaksi yang terjadi pada waktu yang sama dan tercatat lebih dari

Dalam studi kasus yang terjadi pada toko X bahwa dalam satu transaksi terdapat satu atau lebih produk yang dibeli oleh customer, selain itu dalam transaksi juga tercantum nama

Sebuah sistem database terdistribusi berisikan sekumpulan site, di mana tiap-tiap site dapat berpartisipasi dalam pengeksekusian transaksi-transaksi yang mengakses data pada satu

• Sebelum adanya DBMS maka data pada umumnya disimpan dalam bentuk flatfile , yaitu file teks yang ada pada sistem operasi. • Sampai sekarangpun masih ada

▪ Bagaimanapun, dalam penguncian dengan protokol tree dapat terjadi , sebuah transaksi mengunci item data yang tidak diakses.  memperkuat locking, dan menambah waktu tunggu 

Terisolasi , jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang

Dokumen tersebut berisi data transaksi dan kehadiran karyawan di sebuah

Sebuah sistem database terdistribusi berisikan sekumpulan site, di mana tiap-tiap site dapat berpartisipasi dalam pengeksekusian transaksi-transaksi yang mengakses data pada satu site