Powered By Blogger

Sabtu, 28 Januari 2017

Mekanisme Locking pada Oracle

Pada umumnya, basis data mulitiuser menerapkan beberapa bentuk data locking
untuk menangani masalah yang berkaitan dengan concurrency, consistency dan integrity.
Locks merupakan mekanisme yang dapat menjaga interaksi destruktif di antara beberapa
transaksi yang mengakses resource yang sama.

Level Isolasi
Oracle mengediakan tiga level isolasi transaksi:

-Read commited
Read commited merupakan level isolasi default. Setiap query yang dieksekusi oleh
suatu transaksi membaca hanya data yang telah di-commit, sebelum query (bukan
transaksi) dimulai.
-Serializable
Transaksi serializable membaca hanya perubahan yang telah di-commit pada saat
transaksi dimulai, ditambah perubahan yang dibuat oleh transaksi itu sendiri melalui
statemen insert, update, dan delete.
-Read-only
Transaksi read-only membaca hanya perubahan yang telah di-commit saat transaksi
dimulai dan tidak memperbolehkan statemen insert, update, dan delete.

Setting Isolation Level
Level Isolasi dapat di-set dengan melakukan menggunakan salah satu perintah di
bawah ini pada awal transaksi :

SET TRANCASTION ISOLATION LEVEL READ COMMITED;
SET TRANCASTION ISOLATION LEVEL SERIALIZABLE;
SET TRANCASTION ISOLATION LEVEL READ ONLY;
Atau bisa juga dengan perintah :
ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;
ALTER SESSION SET ISOLATION_LEVEL READ COMMITED;

Tipe Locking

Oracle secara otomatis menentukan locks yang perlu saat pengeksekusian statemen
SQL, namun Oracle juga memperbolehkan user untuk melakukan locking data secara
manual. Operasi DML (data manipulation language) dapat memperoleh locking data pada
dua level : pada row-row tertentu dan pada keseluruhan tabel.

1. Row Locks (TX)
DML locks yang diperoleh secara otomatis adalah row-level locking, tidak ada
batasan jumlah row lock yang dpat dibuat oleh suatu statemen atau transaksi. Row lockng
menjamin concurrency dan throughput yang tinggi.

2. Table Locks (TM)
Table locks dapat dilakukan dengan beberapa pilihan mode sebagai berikut:
-Row Share Table Locks (RS)
Row share table locks (disebut juga subshare table locks, SS) menandakan bahwa
transaksi yang memegang lock pada table telah melakukan row lock pada table
tersebut dan bermaksud untuk melakukan updating. Row share table lock adalah
mode table lock dengan batasan terendah, menawarkan concurrency yang tinggi.
Sintaks :
SELECT … FROM table… FOR UPDATE OF…;
LOCK TABLE table IN ROW SHARE MODE;

Permitted Operations : semua transaksi yang melakukan query, insert, update, delete
atau lock rows secara konkuren pada table yang sama. Selain itu, transaksi lain juga
dapat melakukan row share, row exclusive, share, dan share row exclusive table locks
pada table yang sama.

Prohibited Operations : transaksi dengan exlusive write access pada table yang sama
dengan statement :
LOCK TABLE table IN EXCLUSIVE MODE;
-Row Exclusive table Locks (RX)
Row exclusive table lock (disebut juga subexclusive table lock, SX) secara umum
menandakan bahwa transaksi yang memegang lock telah melakukan perubahan
terhadap row-row pada table tersebut. Row Exclusive table lock sedikit lebih ketat
dibandingkan dengan row share table lock.
Sintaks :
INSERT INTO table …;
UPDATE table …;
DELETE FROM table …;
LOCK TABLE table IN ROW EXCLUSIVE MODE;

Permitted Operations : semua transaksi yang melakukan query, insert, update, delete
atau lock rows secara konkuren pada table yang sama. Selain itu, transaksi lain juga
dapat melakukan row share dan row exclusive table locks pada table yang sama.

Prohibited Operations : transaksi dengan exlusive write/read pada table yang sama.
Selain itu, transaksi lain tidak dapat melakukan lock pada table dengan statement :
LOCK TABLE table IN SHARE MODE;
LOCK TABLE table IN SHARE EXCLUSIVE MODE;
LOCK TABLE table IN EXCLUSIVE MODE;

-Share Table Locks (S)
Share table lock tidak memperbolehkan transaksi lain untuk memodifikasi table yang
sama.
Sintaks :
LOCK TABLE table IN SHARE MODE;
Permitted Operations : transaksi hanya dapat melakukan query, lock row tertentu
dengan SELECT.. FOR UPDATE, atau LOCK TABLE… IN SHARE MODE.
Tidak ada update yang diperbolehkan bagi transaksi lain.
Prohibited Operations : Transaksi lain tidak dapat melakukan lock pada table dengan
statement :
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;
LOCK TABLE table IN EXCLUSIVE MODE;
LOCK TABLE table IN ROW EXCLUSIVE MODE;
-Share Row Exclusive Table Locks (SRX)
Share row exclusive table lock (disebut juga share-subexclusive table lock, SSX)
lebih ketat dibandingkan share table lock.
Sintaks :
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;
Permitted Operations : transaksi hanya dapat melakukan query atau lock row tertentu
dengan SELECT.. FOR UPDATE, namun tidak dapat melakukan update pada table
tersebut.
Prohibited Operations : Transaksi lain tidak dapat melakukan lock pada table dengan
statement :
LOCK TABLE table IN SHARE MODE;
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;
LOCK TABLE table IN EXCLUSIVE MODE;
LOCK TABLE table IN ROW EXCLUSIVE MODE;

-Exclusive table Locks (X)
Exclusive table lock merupakan mode table lock yang paling ketat, hanya
memperbolehkan transaksi yang memegang lock exclusive write untuk mengakses
table.
Sintaks :
LOCK TABLE table IN EXCLUSIVE MODE;
Permitted Operations : hanya satu transaksi tertentu yang dapat me-lock sebuah tabel
secara ekslusif. Transaksi lain hanya dapat melakukan query terhadap tabel tersebut.
Prohibited Operations : Transaksi lain tidak dapat melakukan statemen DML atau
melakukan lock pada table.

Tidak ada komentar:

Posting Komentar