• Tidak ada hasil yang ditemukan

Modul Praktikum Sistem Basis Data 2010

N/A
N/A
Protected

Academic year: 2021

Membagikan "Modul Praktikum Sistem Basis Data 2010"

Copied!
10
0
0

Teks penuh

(1)

Modul Praktikum Sistem Basis Data

2010

1

Alif Finandhita, S.Kom

BAB XI

MENGELOLA TRANSAKSI

Dalam penggunaan database, sering terjadi pengaksesan sebuah database oleh beberapa user

atau beberapa program pada saat yang bersamaan, oleh karena itu dibutuhkan pengaturan untuk

menjaga konsistensi pengaksesan data, sehingga tidak akan terjadi katidakkonsistensian data.

Transaksi dapat digunakan untuk menjaga konsistensi dan keakuratan data. Transaksi digunakan

untuk mengatur hak user pada saat mengakses database.

Transaksi memastikan bahwa suatu proses yang dijalankan terhadap database dilaksanakan

seluruhnya atau tidak sama sekali. Jika terjadi suatu kesalahan, maka proses harus di roll back dan

kondisi database kembali seperti sebelum dimulainya proses tersebut, sebaliknya jika proses

berhasil, maka seluruh data dimasukkan ke dalam database. Selain itu, transaksi juga memastikan

hanya boleh ada satu user yang sedang mengakses penulisan terhadap database, jika satu user

sedang melakukan proses penulisan, maka user lain dibatasi dalam pengaksesan database, dengan

begitu, maka data akan konsisten.

Hanya saja, tidak semua mesin mendukung proses pengelolaan transaksi. Dua mesin yang

sering digunakan adalah MyISAM dan InnoDB. MyISAM lebih sering digunakan, tapi mesin ini tidak

mendukung pengelolaan transaksi, sehingga untuk menggunakan pengelolaan transaksi, kita perlu

menggunakan mesin InnoDB. Sebagai contoh:

Berikut ini merupakan gambar skema pelaksanaan pengelolaan transaksi:

Keterangan mesin yang digunakan, di letakkan pada akhir pendeskripsian tabel yang dibuat dan menggunakan mesin tersebut.

CREATE TABLE novel

(

idNovel smallint unsigned auto_increment prima ry key,

judulNovel varchar(50) not null,

pengarangNovel varchar(50)

)

ENGINE=INNODB;

Database

setelah

akhir proses

Database pada saat

awal proses

START TRANSACTION

INSERT INTO novel VALUES

(NULL,’Twilight’,’Stephanie Mayer’),

(NULL,’New

Moont’,’Stephanie

Mayer’);

Proses berhasil

dilaksanakan

Proses

Gagal

COMMIT;

ROLLBACK;

(2)

Modul Praktikum Sistem Basis Data

2010

2

Alif Finandhita, S.Kom

XI.1 Statement memulai Transaksi

Untuk memulai sebuah transaksi, syntax yang digunakan adalah START TRANSACTION,

syntax ini diletakkan pada awal proses yang akan dilaksanakan menggunakan Transaksi.

XI.2 Statement COMMIT Transaksi

Statement COMMIT digunakan untuk mengakhiri suatu proses dan menyimpan semua

perubahan data yang terjadi dalam proses. Berikut ini merupakan contoh penggunaan

COMMIT:

XI.3 Statement ROLLBACK Transaksi

Seperti statement COMMIT, statement ROLLBACK juga digunakan untuk mengakhiri suatu

proses, hanya saja, jika kita menggunakan ROLLBACK, maka semua proses yang dilakukan

tidak akan disimpan, dan kondisi di kembalikan seperti pada awal proses. Berikut ini adalah

contoh penggunaan ROLLBACK:

Hasilnya adalah:

START TRANSACTION;

INSERT INTO novel VALUES

(NULL,'Twilight','Stephanie Mayer'),

(NULL,'New Moon','Stephanie Mayer');

COMMIT;

select * from novel;

+---+---+---+

| idNovel | judulNovel | pengarangNovel |

+---+---+---+

| 1 | Twilight | Stephanie Mayer |

| 2 | New Moon | Stephanie Mayer |

+---+---+---+

Statement memulai Transaksi Proses Pengisian data ke dalam tabel novel.

Statement mengcommit semua proses yang terjadi di dalam Trasaksi.

(3)

Modul Praktikum Sistem Basis Data

2010

3

Alif Finandhita, S.Kom

XI.4 Statement yang dapat mengakhiri Transaksi

Terdapat beberapa statement yang jika kita letakkan di dalam proses yang menggunakan

Transaksi dapat secara otomatis menghentikan Transaksi, kemudian pernyataan tersebut

dijalankan. Jika hal ini terjadi, maka semua proses dalam Transaksi akan di COMMIT dan

tidak akan bisa di ROLLBACK. Pernyataan-pernyataan tersebut antara lain:

Pernyataan

Keterangan

ALTER TABLE

Mengubah definisi tabel

CREATE INDEX

Membuat indeks di dalam tabel

DROP DATABASE

Menghapus database dari mysql server

DROP INDEX

Menghapus indeks didalam tabel

DROP TABLE

Menghapus tabel dari database

LOCK TABLES

Menghalangi akses bersamaan pada tabel

RENAME TABLES

Mengubah nama tabel

SET AUTOCOMMIT=1

Menyetel autocommit ke dalam mode on

START TRANSACTION

Memulai Transaksi baru

TRUNCATE TABLE

Menghapus data dari tabel

UNLOCK TABLES

Menghilangkan LOCK TABLES

Isi tabel novel kembali pada kondisi sebelum proses transaksi.

Isi tabel novel setelah pernyataan ROLLBACK:

Jika sebelum pernyataan ROLLBACK kita menamplkna isi dari tabel novel adalah sbb:

START TRANSACTION;

INSERT INTO novel VALUES

(NULL,'Eclipse','Stephanie Mayer'),

(NULL,'Breaking

Down','Stephanie

Mayer');

ROLLBACK;

Statement memulai Transaksi Proses Pengisian data ke dalam tabel novel.

Statement mengembalikan semua proses yang terjadi di dalam Trasaksi ke kondisi awal.

select * from novel;

+---+---+---+

| idNovel | judulNovel | pengarangNovel

|

+---+---+---+

| 1 | Twilight | Stephanie Mayer |

| 2 | New Moon | Stephanie Mayer

|

| 3 | Eclipse | Stephanie Mayer |

| 4 | Br eaking Down | Stephanie Mayer

|

+---+---+---+

select * from novel;

+---+---+---+

| idNovel | judulNovel | pengarangNovel

|

+---+---+---+

| 1 | Twilight | Stephanie Mayer |

| 2 | New Moon | Stephanie Mayer |

+---+---+---+

(4)

Modul Praktikum Sistem Basis Data

2010

4

Alif Finandhita, S.Kom

XI.5 SAVEPOINT

Jika dalam sebuah proses yang panjang, kita memerlukan beberapa titik untuk melakukan

penyimpanan data. Titik itu dapat kita sebut SAVEPOINT. Beriku ini merupakan skema

peletakkan SAVEPOINT didalam Transaksi:

XI.5.1 Pernyataan SAVEPOINT

Untuk menyatakan savepoint, pernyataannya adalah:

SAVEPOINT <nama savepoint>;

Dengan menggunakan pernyataan savepoint, maka semua proses yang terjadi sebelum

pernyataan ini akan di commit, kemudian melanjutkan ke proses selanjutnya, tentunya

pernyataan ini harus didalam Transaksi.

XI.5.2 Mengembalikan proses ke titik savepoint

Untuk mengembalikan kondisi database ke savepoint, maka digunakan pernyataan:

ROLLBACK TO SAVEPOINT <nama savepoint>;

Dengan ini, maka semua proses setelah savepoint sampai pernyataan ini di remove dan

kondisi database kembali seperti pada saat stelah savepoint.

Berikut ini contoh penggunaan SAVEPOINT dan ROLLBACK TO SAVEPOINT:

Database pada akhir transaksi.

Database SAVEPOINT sp1

Database pada awal transaksi.

START TRANSACTION;

INSERT INTO novel VALUES

(NULL,’Laska r Pelangi ’,’Andrea Hi ra ta’);

Eksekusi berhasil

Eksekusi Gagal

INSERT INTO novel VALUES

(NULL,’Sang Pemimpi,’Andrea Hi ra ta’);

Eksekusi berhasil

Eksekusi Gagal

SAVEPOINT sp1;

COMMIT;

ROLLBACK TO SAVEPOINT sp1; COMMIT;

(5)

Modul Praktikum Sistem Basis Data

2010

5

Alif Finandhita, S.Kom

START TRANSACTION; INSERT INTO novel VALUES (NULL,'Eclipse','Stephanie Mayer'), (NULL,'Breaking Down','Stephanie Mayer'); SAVEPOINT save1;

select * from novel;

+---+---+---+ | idNovel | judulNovel | pengarangNovel | +---+---+---+ | 1 | Twilight | Stephanie Mayer | | 2 | New Moon | Stephanie Mayer | | 3 | Eclipse | Stephanie Mayer | | 4 | Breaking Down | Stephanie Mayer | +---+---+---+

INSERT INTO novel VALUES (NULL,'Edensor','Andrea Hirata'), (NULL,'Mariamah Karpov','Andrea Hirata'); select * from novel;

+---+---+---+ | idNovel | judulNovel | pengarangNovel | +---+---+---+ | 1 | Twilight | Stephanie Mayer | | 2 | New Moon | Stephanie Mayer | | 3 | Eclipse | Stephanie Mayer | | 4 | Breaking Down | Stephanie Mayer | | 5 | Edensor | Andrea Hirata | | 6 | Mariamah Karpov | Andrea Hirata | +---+---+---+ ROLLBACK TO SAVEPOINT save1; INSERT INTO novel VALUES

(NULL,'Laskar Pelangi','Andrea Hirata'), (NULL,'Sang Pemimpi','Andrea Hirata'); COMMIT;

select * from novel;

+---+---+---+ | idNovel | judulNovel | pengarangNovel | +---+---+---+ | 1 | Twilight | Stephanie Mayer | | 2 | New Moon | Stephanie Mayer | | 3 | Eclipse | Stephanie Mayer | | 4 | Breaking Down | Stephanie Mayer | | 7 | Laskar Pelangi | Andrea Hirata | | 8 | Sang Pemimpi | Andrea Hirata | +---+---+---+

Memulai Transaksi

Mengisi data kedalam Database sebanyak 2 data

SAVEPOINT dengan nama save1

Isi database setelah SAVEPOINT, terdapat 4 data.

Mengisi data kedalam Database sebanyak 2 data

Isi database setelah pengisian, jumlah data menjadi 6 data

Mengembalikan database ke kondisi pada saat SAVEPOINT, hasil database akan sama seperti pada saat setelah pernyataan SAVEPOINT, yaitu terdapat 4 data.

Mengisi data kedalam Database sebanyak 2 data

Seluruh proses Transaksi di-commit. Terjadi proses penambahan 2 data.

(6)

Modul Praktikum Sistem Basis Data

2010

6

Alif Finandhita, S.Kom

XI.6 Mengatur mode AUTOCOMMIT

Pada dasarnya, tanpa adanya pernyataan COMMIT, setiap proses yang terjadi langsung di

tulis ke dalam tabel. Untuk itu, kita perlu mengatur autocommit untuk tidak melakukan

penulisan secara otomatis, sehingga proses yang terjadi tidak akan langsung ditulis ke tabel

hingga ada pernyataan

COMMIT

. Untuk mengatur autocommit, pernyataan yang digunakan

adalah:

Pernyataan

Keterangan

SET AUTOCOMMIT=0

Untuk mematikan autocommit(OFF)

SET AUTOCOMMIT=1

Untuk menyalakan autocommit(ON)

@@AUTOCOMMIT;

Untuk melihat mode autocommit yang sedang digunakan

(7)

Modul Praktikum Sistem Basis Data

2010

7

Alif Finandhita, S.Kom

SET AUTOCOMMIT=0; SELECT @@AUTOCOMMIT; +---+ | @@AUTOCOMMIT | +---+ | 0 | +---+

INSERT INTO novel VALUES (NULL,'Edensor','Andrea Hirata'); select * from novel;

+---+---+---+ | idNovel | judulNovel | pengarangNovel | +---+---+---+ | 1 | Twilight | Stephanie Mayer | | 2 | New Moon | Stephanie Mayer | | 3 | Eclipse | Stephanie Mayer | | 4 | Breaking Down | Stephanie Mayer | | 7 | Laskar Pelangi | Andrea Hirata | | 8 | Sang Pemimpi | Andrea Hirata | | 9 | Edensor | Andrea Hirata | +---+---+---+ exit;

AUTOCOMMIT diatur dalam mode 0 atau OFF

Select untuk melihat mode autocommit yang sedang digunakan.

Memasukkan data baru ke dalam tabel novel.

Data dalam database setelah di tambah. Jumlah ada menjadi 7 data

Keluar dari mysql console use contoh2;

Database changed select * from novel;

+---+---+---+ | idNovel | judulNovel | pengarangNovel | +---+---+---+ | 1 | Twilight | Stephanie Mayer | | 2 | New Moon | Stephanie Mayer | | 3 | Eclipse | Stephanie Mayer | | 4 | Breaking Down | Stephanie Mayer | | 7 | Laskar Pelangi | Andrea Hirata | | 8 | Sang Pemimpi | Andrea Hirata | +---+---+---+ select @@autocommit; +---+ | @@autocommit | +---+ | 1 | +---+

Stelah keluar dari mysql console, kemudian buka kembali mysql console, gunakan database, dan lihat isi data pada tabel novel.

Data pada tabel novel kembali menjadi 6 data, hasil eksekusi dari proses sebelumnya tidak disimpan kedalam database.

Mode utama dari autocommit adalah 1 atau ON, jadi ketika mysql console baru dijalankan, maka mode kembali menjadi 1/ON

(8)

Modul Praktikum Sistem Basis Data

2010

8

Alif Finandhita, S.Kom

XI.7 Mengatur Pemisahan Level Transaksi

Selain dapat mengatur autocommit, mysql juga mengizinkan pengaturan pemisahan level

Transaksi dengan menggunakan perintah sebagai berikut:

4 Level Pemisahan Transaksi:

Level Pemisahan Transaksi

Keterangan

READ UNCOMMITED

Mengizinkan dirty reads, nonrepeatable reads dan phantom

read. Level ini lebih baik hanya digunakan pada database

dengan data yang umum.

READ COMMITED

Hanya mengizinkan nonrepeatable read dan phantom read,

tetapi tidak untuk dirty read.

REPEATABLE READ

Hanya mengizinkan phantom read,, merupakan level

pemisahan transaksi utama pada mesin InnoDB.

SERIALIZABLE

Tidak mengizinkan adanya dirty read, nonrepeatable read dan

phantom read. Jika level ini digunakan, maka database di kunci

dari transaksi lain dan berjalan secara berurutan. Hanya level ini

yang tersedia untuk tabel BDB.

Penjelasan:

Dirty Reads

Merupakan masalah yang terjadi ketika terdapat beberapa transaksi yang mencoba

untuk mengakses satu tabel pada waktu yang sama ataupun hampir bersamaan.

Nonrepeatable Reads

Merupakan masalah yang terjadi ketika ada sebuah transaksi yang sedang mengakses

pembacaan terhadap suatu database, kemudian ketika proses tersebut masih

berlangsung, ada proses lain yang mengupdate isi database. Hal ini menyebabkan ada

data yang tidak terbaca oleh transaksi yang sedang membaca.

SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL

{READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

Minimal yang harus diatur adalah keyword SET TRANSACTION ISOLATION LEVEL dan salah satu dari 4 level pemisahan (yang terdapat dalam kurung kurawal)

Jika keywords yang dipilih adalah GLOBAL, maka pernyataan transaksi akan diaplikasikan pada semua koneksi baru terhadap database, tetapi tidak berlaku pada koneksi yang sedang digunakan.

Jika keywords SESSION yang dipilih, maka pernyataan transaksi dilaksanakan pada semua transaksi baru yang terjadi pada koneksi database yang sedang digunakan, tetapi tidak berlaku untuk koneksi database lain.

(9)

Modul Praktikum Sistem Basis Data

2010

9

Alif Finandhita, S.Kom

Phantom Reads

Merupakan masalah yang terjadi ketika transaksi pertama membaca database,

kemudian transaksi kedua memprbaharui database, kemudian transaksi pertama

membaca kembali database, maka transaksi pertama akan mendapatkan hasil yang

berbeda.

Contoh Penggunaan SET TRANSACTION:

XI.8 Penguncian Tabel yang tidak menggunakan Transaksi

Transaksi hanya dapat digunakan pada tabel yang menggunakan mesin INNODB dan BDB

tabel. Untuk melakukan penguncian atau pengaturan agar tidak terjadi dirty reads,

nonrepeatable reads dan phantom reads ada syntax yang dapat digunakan, yaitu:

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

SET TRANSACTION diatur hanya untuk session yang sedang berlangsung.

Level yang digunakan adalah READ COMMITTED, yaitu mengizinkan adanya nonrepeatable reads dan phantom reads.

select @@global.tx_isolation;

+---+

| @@global.tx_isolation |

+---+

| REPEATABLE-READ |

+---+

Merupakan syntax yang digunakan untuk mengetahui pengaturan level isolasi yang umum digunakan, yaitu REPEATABLE-READ

select @@tx_isolation;

+---+

| @@tx_isolation |

+---+

| READ-COMMITTED |

+---+

Merupakan syntax yang digunakan untuk mengetahui pengaturan level isolasi yang sedang digunakan, yaitu

READ -COMMITTED

LOCK {TABLE | TABL ES}

<table name> [AS <alias>] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

[{, <table name> [AS <alias>] {READ [LOCAL] | [LOW_PRIORITY] WRITE}}...]

(10)

Modul Praktikum Sistem Basis Data

2010

10

Alif Finandhita, S.Kom

Contohnya:

XI.9 Pelepasan Kunci terhadap Tabel

Jika tebel telah di kunci, maka setelah proses selesai kunci harus dilepaskan agar transaksi

lain bisa mengakses tabel. Syntax yang digunakan adalah:

LOCK T ABLE novel READ; Mengunci sebuah tabel yaitu tabel novel, Penguncian di atur agar tabel novel hanya dapat di baca tanpa bisa di update oleh transaksi lain.

LOCK TABLES novel READ, peminjaman WRITE;

Mengunci beberapa tabel, yaitu tabel novel dan peminjaman.

Tabel novel di kunci untuk tetap dapat dibaca oleh transaksi lain,

Tabel peminjaman tidak dapat di akses sama sekali oleh Transaksi lain.

UNLOCK [TABLE/TABLES]

Jika penguncian yang dilakukan terhadap satu table, maka pelepasan kunci menggunakan

UNLOCK TABLE

Sedangkan jika yang dikunci adalah banyak tabel, maka pelepasan penguncian menggunakan syntax

Gambar

Tabel  novel  di  kunci untuk tetap  dapat  dibaca  oleh transaksi lain,

Referensi

Dokumen terkait

Perlakuan defoliasi tidak memberi pengaruh nyata pada seluruh komponen panen yang diamati, mencakup pengamatan panjang umbi, jumlah umbi/tanaman, bobot umbi/tanaman,

When treating children with conduct disorder I, like every other child and adolescent psychiatrist, hope that in addition to the CD there is another disorder that we can treat.. If

Tujuan penelitian ini adalah untuk mengetahui: 1) kontribusi pemanfaatan perpustakaaan terhadap hasil belajar auditing,2) kontribusi intensitas belajar terhadap

atas limpahan rahmatnya dan hidayahnya serta kesempatan yang diberikan olehnya sehingga penulis dapat menyelesaikan skripsi yang berjudul “ Hambatan Eksternal Indonesia

Namun demikian, pilihan seseorang dari pendekatan ini juga dipengaruhi oleh faktor lain, yaitu kharisma dari seorang kandidat yang menjadi sosok idaman bagi

Dalam penelitian ini perbedaan jenis umpan dan lama perendaman alat tangkap bubu lipat tidak saling mempengaruhi terhadap hasil tangkapan ikan betutu, sehingga

Sasaran yang ingin dicapai adalah terbentuknya zonasi dalam kawasan Taman Nasional Gunung Merbabu yang dapat menjadi salah satu pedoman pengelolaan dan

Hasil analisis regresi linier dan pengujian signifikan (Uji-F) tersebut dapat memberikan kesimpulan bahwa teknologi informasi yang mencakup indikator paling