Anda di halaman 1dari 52

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

OLEH KELOMPOK 6
1.
2.
3.
4.

SAFRINA KHARISMA IMANDANI


TETHA VALIANTA
BAGAS ANANTA PRAKOSO
DENNY ANGGA SETYAWAN

5213100028
5213100055
5213100115
5213100178

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

DAFTAR ISI
Soal 1 ...................................................................................................................................................... 3
Melakukan Set Autocommit menjadi Off melalui Options .................................................................... 3
A.

Bereksperimenlah dengan rollback dan commit statement .......................................................... 7

Melakukan Set Autocommit menjadi Off melalui Query..................................................................... 15


A.

Bereksperimenlah dengan rollback dan commit statement ........................................................ 19

B.

Perbedaan commit dan rollback pada autocommit on dan off ................................................... 24

Soal 2 .................................................................................................................................................... 26
MENJAWAB SOAL 2 A ............................................................................................................................ 26
A. INTRODUCTION ............................................................................................................................ 26
b. TRANSACTION 1 ............................................................................................................................ 27
b. TRANSACTION 2 ............................................................................................................................ 28
b. TRANSACTION 3 ............................................................................................................................ 29
b. TRANSACTION 4 ............................................................................................................................ 30
MENJAWAB SOAL 2 B ............................................................................................................................ 31
1. Efek Save Transaction .................................................................................................................... 31
2. PERAN Save Transaction ................................................................................................................ 32
3. Efek Checkpoints ........................................................................................................................... 34
Soal 3 .................................................................................................................................................... 36
Soal 4 .................................................................................................................................................... 46
Soal 5 .................................................................................................................................................... 48
JAWABAN 5 a .................................................................................................................................... 48
JAWABAN 5 B .................................................................................................................................... 49
JAWABAN 5 c..................................................................................................................................... 50
REFERENSI ............................................................................................................................................. 52

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SOAL 1
Set Autocommit dalam SQL Server Management studio menjadi Off
a. Bereksperimenlah dengan rollback dan commit statement
b. Perbedaan commit dan rollback pada autocommit on dan off
Jawaban :
Autocommit adalah sebuah perintah dimana setiap proses yang berhasil dilaksanakan akan
secara otomatis secara fisik disimpan dalam database. Biasanya dalam Microsoft SQL server akan
secara otomatis autocommit aktif sehingga tidak perlu dilakukan commit disetiap akhir traksaksi.
Karena akan secara otomatis dilakukan commit dan semua transaksi akan tersimpan secara
otomatis pada database. Untuk menonaktifkan autocommit pada SQL Server Management Studio
adalah sebagai berikut :
Melakukan Set Autocommit menjadi Off melalui Options,
Melakukan Set Autocommit menjadi Off dengan Query

MELAKUKAN SET AUTOCOMMIT MENJADI OFF MELALUI OPTIONS

Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui options adalah sebagai berikut :

1. Setelah mengaktifkan aplikasi SQL Server Management Studio, lakukan koneksi


database seperti biasa :

2. Langkah selanjutnya adalah pada Menu bar, pilih Tools kemudian pilih pilhan options.
Maka akan muncul jendela options.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Akan muncul jendela options berikut ini :

3. Selanjutnya pada jendela option pilihlah Query Execution kemudian akan muncul
beberapa pilihan, pilih SQL Server kemudian pilih kembali ANSI

4. Setelah itu untuk melakukan Set Autocommit, centang pada bagian SET
IMPLICIT_TRANSACTIONS setelah itu pilih OK.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel CUSTOMER sebelum dilakukan update :

Setelah itu dilakukan update dengan mengubah nomer telpon dari customer dengan melakukan update
pada query berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :

Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :

A. BEREKSPERIMENLAH DENGAN ROLLBACK DAN COMMIT STATEMENT

Commit :

Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Management
studio terdapat dua penggunaan query yaitu dengan :
o
o

COMMIT TRANSACTION
COMMIT WORK

Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus ini
dilakukan perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

COMMIT TRANSACTION

Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
nomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.

Sebelum update :

Sesudah update :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '220-2200'
WHERE CUS_CODE = '10015'
COMMIT WORK

Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
nomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.

Sebelum update :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Setelah update :

ROLLBACK :

Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukan
perubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
nomer telpon pelanggan yang telah di update menjadi 100-1100 kembali seperti semua
yaitu 297-3809 dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE CUSTOMER
SET CUS_PHONE = '110-1100'
WHERE CUS_CODE = '10019'
ROLLBACK TRANSACTION

Sebelum update :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Setelah update :

Setelah dilakukan ROLLBACK :

Berikut ini adalah data setelah berhasil dilakukan commit sebelumnya :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
nomer telpon pelanggan yang telah di update menjadi 220-2200 kembali seperti semua
yaitu 442-3381 dengan query sebagai berikut :
BEGIN TRANSACTION;
UPDATE CUSTOMER
SET CUS_PHONE = '442-3381'
WHERE CUS_CODE = '10015'
ROLLBACK TRANSACTION;

Sebelum update :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Setelah update :

Setelah dilakukan ROLLBACK :

Data tidak dapat dilakukan ROLLBACK karena data yang sudah dilakukan COMMIT sudah
disimpan secara permanen sehingga tidak dapat dilakukan ROLLBACK.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

MELAKUKAN SET AUTOCOMMIT MENJADI OFF MELALUI QUERY

Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui query adalah sebagai berikut :
1. Setelah mengaktifkan aplikasi SQL Server Management Studio, lakukan koneksi
database seperti biasa :

2. Langkah selanjutnya adalah pada database, klik kanan dan pilih New Query

Akan muncul jendela sql query berikut ini :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

3. Selanjutnya pada jendela option pilihlah SQL Query tuliskan perintah berikut, SET
IMPLICIT_TRANSACTIONS ON, untuk menonaktifkan Autocommit.

Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel VENDOR sebelum dilakukan update :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Setelah itu dilakukan update dengan mengubah kode area dari vendor dengan melakukan update pada
query berikut :
BEGIN TRANSACTION;
UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'

Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.

Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

A. BEREKSPERIMENLAH DENGAN ROLLBACK DAN COMMIT STATEMENT

Commit :

Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Management
studio terdapat dua penggunaan query yaitu dengan :
o
o

COMMIT TRANSACTION
COMMIT WORK

Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus ini
dilakukan perubahan pada kode area dari vendor dengan query sebagai berikut :

BEGIN TRANSACTION
UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'
COMMIT TRANSACTION

Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
kode area dari vendor. Dalam hal ini karena dalam query sudah dilakukan commit maka
pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Sesudah update :

Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada kode area dari vendor dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE VENDOR
SET V_AREACODE = '800'
WHERE V_CODE = '25595'
COMMIT WORK

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Maka hasil update data adalah seperti gambar berikut :

Data sebelumnya :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

ROLLBACK :

Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukan
perubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :

Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
kode area pelanggan yang telah di update menjadi 700 kembali seperti semua yaitu 904
dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE VENDOR
SET V_AREACODE = '700'
WHERE V_CODE = '21226'
ROLLBACK TRANSACTION

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Setelah dilakukan ROLLBACK data kembali ke nilai awal yaitu 904 :

Sama seperti sebelumnya data yang sudah dilakukan commit tidak dapat dilakukan
ROLLBACK karena data yang sudah dilakukan COMMIT sudah disimpan secara permanen
sehingga tidak dapat dilakukan ROLLBACK.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

B. PERBEDAAN COMMIT DAN ROLLBACK PADA AUTOCOMMIT ON DAN OFF

Commit

NO

Autocommit on

Autocommit off

Pada saat autocommit diaktifkan maka


dalam SQL Server Management studio
akan secara otomatis menyimpan data
tanpa perlu menuliskan query commit.
Langsung saja melakukan perintah
update untuk melakukan perubahan pada
data seperti berikut :

Pada saat autocommit dimatikan dalam SQL Server


Management studio maka harus dilakukan commit
pada setiap kali melakukan transaksi karena jika
tidak data yang telah dilakukan update tidak akan
tersimpan.

Jikatidak dilakukan commit maka tidak akan ada


Meskipun tidak dilakukan commit pada perubahan dalam data seperti berikut :
saat sql dikeluarkan, dan dibuka kembali
hasil update masih tetap ada dan
tersimpan seperti berikut :

Pada saat autocommit diaktifkan maka


setiap transaksi selesai akan dilakukan
commit
otomatis
tanpa
ada
pemberitahuan

Pada saat autocommit dinonaktifkan maka setiap


transaksi selesai dan sql query di close maka akan
muncul permintaan pesan untuk melakukan
commit seperti berikut :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Rollback

NO
1

Autocommit on
Pada saat autocommit diaktifkan maka
secara otomatis commit akan menyimpan
data secara permanen sehingga tidak dapat
dilakukan ROLLBACK, data yang tersimpan
tidak dapat dikembalikan seperti semulai
lagi seperti berikut :

Autocommit off
Pada saat autocommit dinonaktifkan
dapat dilakukan ROLLBACK untuk
mengembalikan
data
sebelumnya,
dengan syarat belum dilakukan commit,
seperti berikut ini

Jika ingin mengembalikan data seperti


semula pada autocommit yang aktif harus
menggunakan transaksi update data
merubah data ke data semula

Jika autocommit dimatikan perubahan


data dapat dilakukan dengan ROLLBACK
dan transaksi update data merubah data
ke data semula

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SOAL 2

Buatlah sebuah transaksi dengan skenario bebas. Db req=2, ada update menggunakan database sale_co
a. Jalankan transaksi tersebut
b. Jelaskan aplikasikan dan tunjukkan dampak dari save transaction dan checkpoint
Jawaban :

MENJAWAB SOAL 2 A
A. INTRODUCTION
1. Sebagai langkah pertama, kami akan menjalankan query untuk membuat database yang
direkomendasikan :

2. Bila dilihat struktur datanya akan terbentuk seperti gambar di bawah ini :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

B. TRANSACTION 1

3. A. VENDOR BEFORE QUERY INSERT :

B. VENDOR AFTER QUERY INSERT

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

B. TRANSACTION 2
4. A. PRODUCT BEFORE QUERY INSERT

B. PRODUCT AFTER QUERY INSERT

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

B. TRANSACTION 3
5. A. CUSTOMER BEFORE QUERY INSERT

B. CUSTOMER AF TER QUERY INSERT

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

B. TRANSACTION 4
6. A. PRODUCT BEFORE QUERY UPDATE

B. PRODUCT AFTER QUERY UPDATE

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

MENJAWAB SOAL 2 B
1. EFEK SAVE TRANSACTION
Melihat efek dari save transaction adalah dengan cara membiarkan database pada kondisi default
(Database SaleCo), kemudian jalankan query berikut :

BEGIN TRANSACTION
SAVE TRANSACTION kenyamanan
Query di atas berfungsi untuk menyimpan kondisi database pada saat belum terjadi transaction, dimana
kondisi tersebut disimpan dengan nama kenyamanan. Kemudian dikombinasikan dengan query yang
sebelumnya dimasukkan yakni INSERT dan UPDATE :
INSERT INTO VENDOR VALUES (21290, 'SUBUR_EYANG', 'SUBUR', 212, 212-5213, 'SB', 'N');
INSERT INTO PRODUCT VALUES ('11NOV/55', 'CELANA KOMPRANK', 2005-11-11, 10, 5, 15, 0, 21290);
INSERT INTO CUSTOMER VALUES (10020, 'WARAS', 'SEGER', 'T', '713', '031-5555', 0);
UPDATE PRODUCT SET P_PRICE = 20 WHERE V_CODE = 21290 ;

Jika query tersebut dijalankan, maka database akan dieksekusi menjadi empat transaksi seperti yang
sudah dituliskan tadi.
Database akan memiliki data baru berupa vendor, product, customer dan mengupdate data product.
Selanjutnya untuk melihat log aktifitas yang telah dieksekusi pada database dapat dilakukan dengan cara
menjalankan query berikut :
SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL);

Query tersebut berfungsi untuk menampilkan Log Sequence Numbers (LSN) yang isinya adalah aktivitas
eksekusi dari database.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Dalam log ini tersimpan juga aktivitas checkpoint dan aktivitas lain yang mungkin tidak terlihat oleh user.
Didukung dengan gambar yang menunjukkan 4 transaksi yang dieksekusi oleh database, dimana transaksi
yang diakomodir adalah :
1.
2.
3.
4.

Insert data VENDOR


Insert data PRODUCT
Insert data CUSTOMER
Update data PRODUCT

Dalam gambar tersebut juga muncul LOP_MARK_SAVEPOINT dimana terjadi pencatatan kondisi database
yang ditandai dengan perintah SAVE TRANSACTION.

2. PERAN SAVE TRANSACTION


Peran save transaction dipakai, ketika user ingin mengembalikan kondisi database pada kondisi semula,
dimana user dapat melakukan proses rollback transaction. Rollback digunakan untuk mengembalikan
kondisi ke database pada kondisi kenyamanan dimana tidak terdapat aktivitas transaction. Berikut
adalah query yang digunakan :
ROLLBACK TRANSACTION kenyamanan ;
Setelah Query dijalankan maka untuk melihat apakah rollback berjalan lancer dapat dicek melihat data
product yang berada pada kondisi awal, dimana tidak ada product CELANA KOMPRANK

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Adapun jika didokumentasikan lognya dapat dilihat dengan gambar berikut ini :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

3. EFEK CHECKPOINTS
Fungsi dari checkpoints adalah untuk membuang data yang kotor (dirty data) dari cache buffer yang
ada pada database disk, yang berguna untuk memastikan jumlah data pada database log tetap dalam
jumlah yang wajar sehingga sistem tidak mengalami load dalam ukuran yang besar.
Pada dasarnya, checkpoints sudah berjalan ketika sql server di start, adapun untuk melihatnya dapat
menggunakan query berikut ini :

SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL);


Berikut adalah hasil querynya :

Untuk mengetahui efek checkpoints dapat dijalankan dengan query berikut :


BEGIN TRANSACTION
SAVE TRANSACTION baradaa
INSERT INTO VENDOR VALUES (21290, 'SUBUR_EYANG', 'SUBUR', 212, 212-5213, 'SB', 'N');
INSERT INTO PRODUCT VALUES ('11NOV/55', 'CELANA KOMPRANK', 2005-11-11, 10, 5, 15, 0, 21290);
INSERT INTO CUSTOMER VALUES (10020, 'WARAS', 'SEGER', 'T', '713', '031-5555', 0);
UPDATE PRODUCT SET P_PRICE = 20 WHERE V_CODE = 21290;
Kemudian setelah query dijalankan, ketikkan query berikut :
DBCC SQLPERF('LOGSPACE')
Query tersebut berfungsi untuk melihat penggunaan log space dari masing-masing database.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Gambar di atas terlihat bahwa penggunaan log dari database afterbebas adalah 41.33858%, untuk
mengetahui dampak dari checkpoint.
Untuk menjalankan perintah checkpoint secara manual, kita dapat menjalankannya dengan query :

CHECKPOINT;
Kemudian setelah query dijalankan, ketikkan kembali query log space berikut :
DBCC SQLPERF('LOGSPACE')

Dari hasil perbandingan kedua gambar di atas, terlihat bahwa penggunaan log space meningkat sekitar
16.92914% setelah eksekusi checkpoint secara manual yang telah dilakukan. Hal tersebut dapat terjadi
karena sistem mencatat aktivitas baru berupa checkpoint pada Log Sequence Number, efeknya adalah
sistem memiliki load tambahan pada usage log space.
Jika kita ingin mengetahui log aktivitas untuk menunjukkan bahwa log ditambahkan karena query
checkpoints dijalankan adalah dengan cara menjalankan query :

SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL) ;


Hasilnya adalah sebagai berikut :

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SOAL 3
Jelaskan macam-macam Isolation Level pada SQL Server
a. Tunjukkan cara merubah settingan isolation level
Jawaban :
Isolation level sendiri terdiri atas:
1. READ UNCOMMITTED

Pada read uncommitted, tidak terdapat isolation pada transaksi sehingga data yang telah dimodifikasi
masih dapat dibaca meskipun transaksi tersebut belum dicommit.
Contoh:
Pada transaksi yang pertama akan dilakukan update P_QOH pada P_CODE=11QER/31 dengan
waktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query seperti
dibawah ini:

BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 2 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
ROLLBACK

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut tidak menunggu hingga transaksi yang pertama selesai. Transaksi kedua
tetap dapat tereksekusi tanpa adanya jeda karena tidak perlu menunggu commit.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT

Fungsi query diatas adalah untuk melakukan setting isolation level.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

2. READ COMMITTED

Read committed merupakan kebalikan dari read uncommitted. Disini terdapat isolation pada
transaksi sehingga database hanya dapat membaca transaksi yang sudah dicommit. Read
committed terbebas dari gangguan dirty reads.
Contoh:
Pada transaksi pertama akan dilakukan update P_QOH pada P_CODE=11QER/31 dengan
waktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query
seperti dibawah ini:
BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
COMMIT

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut menunggu hingga transaksi yang pertama selesai.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT

Hasilnya dapat dilihat dibawah ini, dimana transaksi kedua hanya dapat tereksekusi saat transaksi
sebelumnya selesai dilakukan.

3. REPEATABLE READ

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Repeatable read memastikan transaksi terjaga dari upaya modifikasi hingga proses transaksi
selesai dilakukan. Jadi transaksi tersebut tidak dapat diganggu sampai proses commit sehingga
terlindungi dari dirty reads dan non-repeatable reads.
Contoh:

Kemudian masukkan query berikut ini untuk menyetting isolation level:


SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT * FROM PRODUCT
WAITFOR DELAY '00:00:20'
SELECT * FROM PRODUCT
ROLLBACK

Akan tetapi transaksi pertama tersebut belum selesai sehingga transaksi yang lainnya tidak dapat
tereksekusi. Masukkan query dibawah ini:
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Jadi transaksi dua baru dapat dieksekusi setelah transaksi yang pertama selesai.

Isolation Level ini tidak bisa melakukan modifikasi dengan perintah update tetapi dapat
melakukan input baru pada baris baru dengan perintah insert.

4. SERIALIZABLE
Pada serialiazable mencegah transaksi update, insert, dan delete. Pada serializable sebelum
transaksi selesai dilakukan maka transaksi yang lain tidak dapat dimodifikasi. Data pada transaksi
yang belum selesai juga tidak dapat dibaca.
Contoh:
Masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SELECT * FROM VENDOR


WAITFOR DELAY '00:00:20'
SELECT * FROM VENDOR
ROLLBACK

Dapat dilihat bahwa transaksi kedua tidak tereksekusi karena transaksi pertama masih belum
selesai dilakukan. Hali ini menyebabkan transaksi pertama hasilnya sama. Jadi tunggulah transaksi
pertama selesai baru eksekusi transaksi kedua.
Kemudian masukkan query dibawah ini:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21228','Nintendo', 'Nigo','667', '111-223', 'JP', 'N')

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Kemudian untuk mengecek hasilnya masukkan query:


SELECT * FROM VENDOR

Dapat dilihat di row nomor empat telah muncul Nintendo.

5. SNAPSHOT

Snapshot berfungsi untuk melindungi dari permasalahan concurrency. Pada snapshot tidak terjadi
lock pada tabel sehingga memungkinkan modifikasi/uptade pada transaksi yang lain. Jadi pada
snapshot data lamanya mempertahankan versi Tempdb.
Contoh:

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Agar dapat mempraktekkan snapshot, kita harus melakukan alter terlebih dahulu dengan
memasukkan query dibawah ini:
ALTER DATABASE tugaskelompokbaru
SET ALLOW_SNAPSHOT_ISOLATION ON

Selanjutnya lakukan perintah select dengan memasukkan query dibawah ini:


SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
SELECT * FROM VENDOR
WAITFOR DELAY '00:00:20'
SELECT * FROM VENDOR
ROLLBACK

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Dapat dilihat bahwa pada transaksi kedua ingin melakukan penambahan row dan transaksi kedua
akan langsung tereksekusi dan tidak perlu menunggu transaksi pertama selesai. Hal ini disebabkan
snapshot tidak melakukan lock pada tabel sehingga dapat dilakukan dimodifikasi.
Cobalah masukkan query dibawah ini untuk menambahkan row baru:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21227','Sega', 'Mike','666', '111-222', 'GB', 'N')

Kemudian untuk mengecek hasilnya masukkan query:


SELECT * FROM VENDOR

Dapat dilihat di row nomor tiga telah muncul Sega.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SOAL 4

Jalankan prosedur built in yang bernama sp_lock


a. Jalankan transaksi yang telah anda buat sebelumnya, lalu jalankan sp_lock. Amati dan jelaskan
hasil dari prosedur tersebut
Jawaban :

Sp lock, merupakan procedure yang menyediakan informasi tentang locks yang ada pada SQL Server
Connections.

Secara eksplisit, procedure ini memberikan system proses ids yang dicari. Tetapi apabila
menjalankan sp_lock tanpa parameter juga dapat dilakukan seperti gambar diatas, hasilnya sistem akan
memberikan pengembalian data yang dipegang oleh semua spids pada server.
Hasil dari procedure ini adalah berupa laporan semua lock yang sedang aktif pada Database Engine.
Penjelasan dari Laporan procedure sp_lock :
1. spid : Database Engine session ID yang meminta Lock
2. dbid : Nomor identifikasi dari database di mana kunci diadakan. Dapat menggunakan fungsi
DB_NAME () untuk mengidentifikasi database.
3. objld : Nomor identifikasi dari objek yang kunci diadakan. Dapat menggunakan fungsi
OBJECT_NAME () dalam database terkait untuk mengidentifikasi objek.
4. indld : Nomor identifikasi dari indeks yang kunci diadakan.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

Type - type pada sp_lock


1. RID = Lock pada satu baris dalam tabel diidentifikasi oleh pengenal baris (RID).
2. KEY = Kunci dalam indeks yang melindungi berbagai kunci dalam transaksi
3.
4.
5.
6.
7.
8.
9.
10.

serializable.
PAG = Lock pada halaman data atau indeks.
EXT = Lock pada Extent.
TAB = Lock pada seluruh tabel, termasuk semua data dan indeks.
DB = Lock pada database.
FIL = Lock pada file database.
APP = Lock pada sumber daya aplikasi-ditentukan.
MD = Kunci pada metadata, atau informasi katalog.
HBT = Lock di atas tumpukan atau indeks B-Tree. Informasi ini tidak lengkap dalam

SQL Server.
11. AU = Lock pada unit alokasi. Informasi ini tidak lengkap dalam SQL Server.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

SOAL 5

5. Jelaskan macam-macam recovery model yang ada pada SQL Server


a. Jelaskan perbedaan masing-masing model
b. Jelaskan nilai default model ketika kita create database
c. Jelaskan cara merubah recovery model dari sebuah database
Jawaban :
Recovery adalah suatu proses dimana untuk melakukan update pada database dengan file backup yang
telah tersimpan terakhir kali. Dalam Recovery terdapat beberapa model yaitu sebagai berikut :
a. Full Recovery Model,
Pada model ini, transaction log akan dipotong saat dilakukan backup transaction log. Pada full
recovery, bckup transaction log harus dilakukan secara berkala agar transaction log tidak
membengkak.
b. Bulk-Logged Recovery Model,
Pada model ini akan dituliskan data page yang telah dimodifikasi kedalam file data sebelum
transaksi dinyatakan selesai.
c. Simple Recovery Model,
Pada model ini pemotongan pada transaction log secara otomatis akan terpotong pada saat
checkpoint selesai dilakukan.

JAWABAN 5 A

Restore Operation

Full Recovery

Bulk-Logged Recovery

Simple Recovery

Log Backup

Membutuhkan log
backup

Membutuhkan log
backup

Tidak ada log backup

Data recovery

Complete recovery (jika


log masih tersedia)

Sebagian data hilang

Data yang terakhir


dilakukan backup

Recover to point in
time?

Dapat pulih dititik waktu


tertentu dengan asumsi
bahwa backup lengkap
pada titik tersebut.

Dapat pulih ke akhir


cadangan. Point-intime tidak didukung

Dapat memulihkan
hanya untuk cadangan
akhir

File Restore

Full support

Terkadang

Hanya untuk file readonly

Page Restore

Full support

Terkadang

Tidak support

Piecemeal (filegroup level) restore

Full support

Terkadang

Hanya untuk file readonly

Monday, 21 March 2016, 23:00 PM

Work loss exposure

MABD KELAS D 2016 KELOMPOK 6

Biasanya tidak ada. Jika


log rusak perubahan log
terbaru harus diulang

Jika log rusak sejak


backup log terbaru
perubahan sejak
backup terakhir harus
diulang.

Perubahan sejak
backup terbaru. Dalam
terjadi bencana
perubahan yang terjadi
akan terulang

JAWABAN 5 B
Pada saat pertamakali melakukan create database nilai default dari model recovery database adalah
simple recovery Nilai tersebut dapat dilihat dari properties pada database baru yaitu seperti berikut ini :
1.

Buatlah sebuah database atau lakukan create database

2.

Setelah database berhasil di create lihat nilai recovery dengan melalui properties

3. Setelah jendela properties muncul pilih pilihan options, lihat pada kolom recovery model
akan terlihat nilai default dari recovery.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

JAWABAN 5 C
Cara mengubah recovery model pada database dapat dilakukan melalui Properties pilih
Options kemudian pilih atau lakukan perubahan dengan memilih recovery model yang
diinginkan. Langkah untuk mengubah dijelaskan sebagai berikut :
1. Lakukan koneksi database seperti biasa

2. Pilih database yang ingin dirubah klik kanan kemudian pilih properties

3.

Setelah itu akan muncul jendela properties dimana pilih options

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

4.

Setelah itu klik drop down pada recovery model kemudian pilih recovery model yang
diinginkan.

5.

Setelah dipilih untuk mengaktifkan perubahan klik tombol OK maka perubahan recovery
model akan tersimpan.

Monday, 21 March 2016, 23:00 PM

MABD KELAS D 2016 KELOMPOK 6

REFERENSI

http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session
https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-managementstudio/
https://msdn.microsoft.com/en-us/library/ms189275.aspx
https://risqajulia.wordpress.com/2014/08/27/backup-dan-recovery-data/
http://hikaruyuuki.lecture.ub.ac.id/files/2010/08/11-Backup-Recovery.pdf
http://gavindraper.com/2012/02/18/sql-server-isolation-levels-by example/#
http://www.besttechtools.com/articles/article/sql-server-isolation-levels-by-example

Anda mungkin juga menyukai