Ketika data di database kita baca atau di rubah, database system akan mengontrol apakah terjadi lock terhadap data. Pada dasarnya Lock berfungsi agar transkasi tidak dapat di rubah oleh transaksi lain selama transaksi tersebut sudah dilakukan commited hal ini menjaga konsistensi terhadap datanya.

So, gimana caranya agar kita bisa membaca data tersebut tanpa terjadi lock. kita bisa mengunakan NOLOCK dan READPAST, lalu bedanya apa ?

1. LOCK.
- Membaca data transaksi yang uncommited dan akan membaca data yang terlock.

Contoh :

BEGIN TRAN
UPDATE GS_AREA_CODES SET ac_area_desc = 'JAKARTA BARAT'
WHERE ac_area_id = '11'

lakukan

SELECT count(*) from GS_AREA_CODES with (NOLOCK)

akan menghasilakn 5 baris kemudian lakukan

ROLLBACK TRAN

lakukan kembali

SELECT count(*) from GS_AREA_CODES with (NOLOCK)

akan menghasilakn 5 baris juga.


2. READPAST.
- Membaca data transaksi yang commited dan akan mengabaikan data yang terlock.

Contoh :

BEGIN TRAN
UPDATE GS_AREA_CODES SET ac_area_desc = 'JAKARTA BARAT'
WHERE ac_area_id = '11'

lakukan

SELECT count(*) from GS_AREA_CODES with (READPAST)

akan menghasilakn 4 baris kemudian lakukan

ROLLBACK TRAN

lakukan kembali

SELECT count(*) from GS_AREA_CODES with (READPAST)

akan menghasilakn 5 baris.
Posted by Shanto Labels:

0 comments: