Bahan Ajar Sistem Basis Data                                                      BAB XI                                  ...
Bahan Ajar Sistem Basis Data          Pros es          Ga ga        ROLLBACK;          l                                  ...
XI.1 Statement memulai Transaksi      Untuk      memulai      sebuah       transaksi,    syntax     yang       digunakan  ...
START TR ANS AC TION;                                    Statement memula i Tra nsa INSERT INTO novel VALUES              ...
XI.5 SAVEPOINT        Jika dalam sebuah proses yang panjang, kita memerlukan beberapa titik untuk        melakukan penyimp...
SAVEPOINT:5   Alif Finandhita, S.Kom
START TRANSACTION;                                            Memula i Tra nsa                                            ...
XI.6 Mengatur mode AUTOCOMMIT     Pada dasarnya, tanpa adanya pernyataan COMMIT, setiap proses yang terjadi langsung di   ...
SET AUTOCOMMIT=0;                                           AUTOCOMMIT diatur dala m mode 0 ata u OFFSELECT @@AUTOCOMMIT;+...
XI.7 Mengatur Pemisahan Level Transaksi         Selain dapat mengatur autocommit, mysql juga mengizinkan pengaturan pemisa...
mengakses pembacaan     terhadap   suatu   database,   kemudian    ketika     proses     tersebut masih berlangsung, ada p...
Phantom Reads          Merupakan         masalah         yang       terjadi     ketika       transaksi       pertama     m...
Contohnya:               LOCK T ABLE novel READ;             Mengunci sebua h ta bel yaitu tabel novel,                   ...
Bab. 11
Bab. 11
Upcoming SlideShare
Loading in …5
×

Bab. 11

740 views

Published on

Published in: Technology, Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
740
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bab. 11

  1. 1. Bahan Ajar Sistem Basis Data BAB XI MENGELOLA TRANSAKSI Dalam penggunaan database, sering terjadi pengaksesan sebuah database oleh beberapauser atau beberapa program pada saat yang bersamaan, oleh karena itu dibutuhkan pengaturanuntuk 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 databasedilaksanakan seluruhnya atau tidak sama sekali. Jika terjadi suatu kesalahan, maka proses harusdi roll back dan kondisi database kembali seperti sebelum dimulainya proses tersebut,sebaliknya jika proses berhasil, maka seluruh data dimasukkan ke dalam database. Selain it u,transaksi juga memastikan hanya boleh ada satu user yang sedang mengakses penulisanterhadap database, jika satu user sedang melakukan proses penulisan, maka user lain dibatasidalam pengaksesan database, dengan begitu, maka data akan konsisten. Hanya saja, tidak semua mesin mendukung proses pengelolaan transaksi. Dua mesin yangsering digunakan adalah MyISAM dan InnoDB. MyISAM lebih sering digunakan, tapi mesin initidak mendukung pengelolaan transaksi, sehingga untuk menggunakan pengelolaan transaksi,kita perlumenggunakan mesin InnoDB. Sebagai contoh: CREATE TAB LE nov el ( i dNovel s malli nt unsi gned a uto_i ncrement pri ma ry key, j udul Novel va rchar(50) not null , Keteranga n mesin ya ng diguna penga ra ngNovel va rcha r(50) ka n, di leta kka npa da ) akhir pendeskrips ia n ta bel ya ng dibuat dan menggunakan ENGINE=INNOD B; mesin tersebut.Berikut ini merupakan gambar skema pelaksanaan pengelolaan transaksi: START TR ANS AC Da ta bas e pa da TION saa t a wal pros es INSERT INTO novel VALUES (NULL,’ Twi li ght’,’S tepha ni e Ma yer’), (NULL,’ New Moon t’, ’Stepha ni e Pros es berha s il d il a ksa na ka n
  2. 2. Bahan Ajar Sistem Basis Data Pros es Ga ga ROLLBACK; l Da ta bas e s etel aCOMMIT; h a khir pros es
  3. 3. 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: START TR ANS AC TION; Statement memula i Tra nsa INSERT INTO novel VALUES ks i (NULL,Twi li ght,Stepha ni e Ma yer), Proses Pengisia n data (NULL,New Moon,S tepha ni e Ma ke dala m ta bel novel. yer); COMMIT; Statement mengcommit semua pros es yang terja di di dala m Tras aksi. Ha sil nya a dal a h: s el ect * from novel ; +--------- +----- ------- +--------- -------- + | i dNovel | j udul Novel | penga ra ngNovel | +--------- +----- ------- +--------- -------- + | 1 | Twi li ght | Stepha ni e Ma yer | | 2 | New Moon | Stepha ni e Ma yer | +--------- +----- ------- +--------- -------- +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:
  4. 4. START TR ANS AC TION; Statement memula i Tra nsa INSERT INTO novel VALUES ks i (NULL,Ecl i ps e,Stepha ni e Ma yer), Proses Pengis ia n da ta ke dala (NULL,Brea ki ng Down,S tepha ni m tabel novel. e Ma yer); Statement mengemba lika ROLLBACK ; n semua proses ya ng terjadi di dala m Tras aksi ke kondis i a wal. Isi tabel novel setela h pernyataan Jika sebelum pernyataan ROLLBACK ROLLBACK: kita menamplkna isi da ri tabel novel ada la s el ect * from novel ; h s bb: +--------- +----- ------- +--------- -------- + s el ect * from novel ; | i dNovel | j udul Novel | penga ra ngNovel +--------- +----- ---------- +------ ----------- + | | i dNovel | j udul Novel | p enga ra ngNovel +--------- +----- ------- +--------- -------- + | | 1 | Twi li ght | Stepha ni e Ma yer | +--------- +----- ---------- +------ ----------- + | 2 | New Moon | Stepha ni e Ma yer | | 1 | Twi li ght | Stepha ni e Ma yer | Isi ta bel novel kemba li pada | 2 | New Moon | Stepha ni e Ma yer kondisi sebelum proses transa ksi. | | 3 | Ecli ps e | Stepha ni e Ma yer |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
  5. 5. 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: START Data bas e pa da a TRANSACTION; wa l tra nsa ks i. I NSERT I NTO novel VALUES (NULL,’Laska r Pelangi ’,’An d rea Hi ra ta’); Eks ekus i berha sil Eks ekus i Ga ROLLBACK; gal SAVEPOINT sp1; Data bas e SAVEPOINT s p1 I NSERT I NTO novel VALUES (NULL,’Sang Pe mimpi,’And rea Hi ra ta’); ROLLBACK TO SAVEPOINT Eks ekus i berha sil Eks ekus i Ga sp1; COMMIT; gal Data bas e pa da a khir tra nsa ks i. COMMIT; 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 remov e dan kondisi database kembali seperti pada saat stelah savepoint. Berikut ini contoh penggunaan SAVEPOINT dan ROLLBACK TO 4 Alif Finandhita, S.Kom
  6. 6. SAVEPOINT:5 Alif Finandhita, S.Kom
  7. 7. START TRANSACTION; Memula i Tra nsa ksiINSERT INTO novel VALUES (NULL,Eclipse,Stephanie Ma yer), (NULL,Breaking Down,Stephanie Ma Mengisi da ta keda lam Da ta base seba nya k 2 yer); da taSAVEPOINT sa ve1; SAVEPOINT dengan nama saselect * from novel; ve1+---- ---- -+- ---- ---- --- ---+---- ---- --- ---- --+| idNovel | judulNovel | pengarangNovel |+---- ---- -+- ---- ---- --- ---+---- ---- --- ---- --+| 1 | Twilight | Stepha ni e Ma yer || 2 | New Moon | Stepha nie Ma yer | Isi databas e setelah| 3 | Eclips e | Stepha nie Ma yer | SAVEPOINT, terda pa t 4 data .| 4 | Brea king Down | Stephanie Mayer |+---- ---- -+- ---- ---- --- ---+---- ---- --- ---- --+INSERT INTO novel VALUES (NULL,Edensor,Andrea Hira ta ), (NULL,Ma ria mah Ka rpov,Andrea Hira Mengisi da ta keda lam Da ta base seba nya k 2 ta ); da taselect * from novel;+---- ---- -+- ---- ---- --- ---- -+-- ---- --- ---- ---- +| idNovel | judulNovel | pengara ngNovel|+---- ---- -+- ---- ---- --- ---- -+-- ---- --- ---- ---- +| 1 | Twilight | Stepha nie Ma yer | Isi da ta base setelah pengisia n, jumla h| 2 | New Moon | Stepha nie Ma yer | data menja di 6 da ta| 3 | Eclips e | Stephanie Ma yer || 4 | Brea king Down | Stepha nie Ma yer|| 5 | Edensor | Andrea Hira ta | Mengembalika n da ta base ke kondis i pa da| 6 | Ma ria ma h Ka rpov | Andrea Hira ta s aat SAVEPOINT, ha sil data base a kan sa ma|+---- ---- -+- ---- ---- --- ---- -+-- ---- --- s eperti pada saa t setela h pernyata an---- ---- + ROLLBACK TO SAVEPOINT s SAVEPOINT, yaituave1;INSERT INTO novel VALUES (NULL,Las ka r Pelangi,Andrea Hira Mengisi da ta keda lam Da ta base seba nya k 2 ta ), (NULL,Sang Pemimpi,Andrea da ta Hira ta ); Seluruh proses Transa ksi di -commit.COMMIT; Terja di proses penamba han 2 da ta .select * from novel;+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+| idNovel | judulNovel | penga ra ngNovel|+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+ Data bas e pada a khir Tra nsa ksi. Terda pa t 6| 1 | Twilight | Stephanie Ma yer | data .| 2 | New Moon | Stephanie Mayer || 3 | Eclips e | Stepha nie Ma yer || 4 | Brea king Down | Stepha nie Mayer || 7 | La s kar Pela ngi | Andrea Hirata || 8 | Sa ng Pemimpi | Andrea Hirata |+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+
  8. 8. 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 COMMI T. 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 Berikut ini contoh pengaturan autocommit:
  9. 9. SET AUTOCOMMIT=0; AUTOCOMMIT diatur dala m mode 0 ata u OFFSELECT @@AUTOCOMMIT;+---- ---- --- ---+| @@AUTOCOMMIT | Select untuk meliha t mode a utocommit ya+---- ---- --- ---+ ng seda ng diguna kan.| 0|+---- ---- --- ---+INSERT INTO novel VALUES (NULL,Edensor,Andrea Hira ta); Memas ukkan da ta ba ru ke da lam ta bel novel.select * from novel;+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+| idNovel | judulNovel | penga ra ngNovel |+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+| 1 | Twilight | Stephanie Ma yer | Data dala m da ta base setela h di| 2 | New Moon | Stephanie Mayer | tamba h. Jumla h a da menja di 7 da ta| 3 | Eclips e | Stepha nie Ma yer || 4 | Brea king Down | Stepha nie Ma yer || 7 | La s kar Pela ngi | Andrea Hirata || 8 | Sa ng Pemimpi | Andrea Hirata || 9 | Edensor | Andrea Hirata |+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+exit; Kelua r da ri mys ql cons oleuse contoh2;Data bas e changed select * fromnovel;+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+ Stela h kelua r dari mysql| idNovel | judulNovel | penga ra ngNovel console, kemudia n buka kembali mys| ql console, guna ka n da taba se, dan+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+ liha t isi da ta pada tabel novel.| 1 | Twilight | Stephanie Ma yer || 2 | New Moon | Stephanie Mayer | Data pada tabel novel kembali menja di| 3 | Eclips e | Stepha nie Ma yer | 6 data , has il eks ekus i dari proses| 4 | Brea king Down | Stepha nie Ma sebelumnya tidak disimpan kedayer | lam data bas e.| 7 | La s kar Pela ngi | Andrea Hirata || 8 | Sa ng Pemimpi | Andrea Hirata | Mode uta ma da ri autocommit a dala+---- ---- -+- ---- ---- --- ---- +--- ---- --- ---- ---+ h 1 a tau ON, ja di ketika mys ql console ba ru dijala nkan, maka modeselect @@a ut ocommi t ; kembali menjadi+---- ---- --- ---+ 1/ON| @@autocommi t |+---- ---- --- ---+| 1|+---- ---- --- ---+
  10. 10. XI.7 Mengatur Pemisahan Level Transaksi Selain dapat mengatur autocommit, mysql juga mengizinkan pengaturan pemisahan level Transaksi dengan menggunakan perintah sebagai berikut: SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE} Minima l ya ng harus dia tur adala h keyword SET TRANSACTION ISOLATION LEVEL da n salah sa tu da ri 4 level pemisa han (yang terda pa t dala m kurung kura wal) Jika keywords ya ng dipilih a da lah GLOBAL, ma ka pernya taan transaksi a ka n diaplikas ikan pa da semua koneks i ba ru terha dap data base, teta pi tida k berla ku pa da koneksi yang seda ng diguna ka n. Jika keywords SESSION ya ng dipilih, ma ka pernyata an tra nsa ks i dila ksa na kan pada s emua tra nsa ks i ba ru ya ng terjadi pa da koneks i da ta base ya ng sedang diguna ka n, teta pi tida k berlaku untuk koneks i da ta base lain. Jika keyword tida k dia tur, ma ka pernyataa n transa ksi ha nya berla ku pa da transa ks i berikutnya . 4 Level Pemisahan Transaksi: Level Pemisahan Transaksi Keterangan REA D UNCO MMITED Mengi zi nka n di rty rea ds , nonrepea ta bl e rea ds da n pha ntom rea d. Lev el i ni l ebi h bai k ha nya di guna ka n pa da da ta bas e denga n da ta ya ng umum. REA D COMMITED Ha nya mengi zi nka n nonrepea ta bl e rea d da n pha ntom rea d, teta pi ti da k untuk dirty rea d. REP EATA BLE REA D Ha nya mengi zi nka n pha ntom rea d,, merupa ka n l evel pemi s a ha n tra ns a ksi uta ma pa da mesi n InnoDB. SERIALIZABLE Ti da k mengi zi nka n a da nya dirty rea d, nonrepea ta bl e rea d da n pha ntom rea d. Ji ka l evel i ni di guna ka n, ma ka da ta bas e di kunci da ri tra nsa ksi lai n da n berj ala n s eca ra beruruta n. Ha nya l evel i ni ya ng ters edi a untuk ta bel 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 8 Alif Finandhita, S.Kom
  11. 11. 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.9 Alif Finandhita, S.Kom
  12. 12. 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: SET S ESSION TRANS ACTION ISOLATION LEVEL R EAD COMMITTED; SET TRANSACTION dia Level ya ng diguna kan ada lah tur hanya untuk sess ion READ COMMITTED, ya itu mengizinkan yang seda ng berla ngs ung. a danya nonrepeatable reads da n phantom reads . s el ect @@gl obal .tx_i s ola ti Merupa ka n s ynta x ya on; ng diguna ka n untuk +---------- ------------ -+ mengeta hui penga tura | @@gl obal .tx_is ol a ti on | n level is olasi yang umum diguna ka n, yaitu +---------- ------------ -+ REPEATABLE-READ | REPEATABLE-READ | +---------- ------------ -+ s el ect @@tx_i s ola ti Merupa ka n s ynta x ya on; ng diguna ka n untuk +---------- ------ + mengeta hui penga tura | @@tx_i s ol a ti on | n level isolasi ya ng sedang diguna ka n, yaitu +---------- ------ + READ -COMMITTED | READ-COM MITTED | +---------- ------ +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: LOCK {TA BLE | TABL ES } <table n ame> [A S <al ias >] {REA D [LOCAL] | [LOW _PRIORITY] WRITE} [{, <tab le name> [AS <alias>] {REA D [LOCAL] | [LOW_P RIO RITY] W RITE}}...] 10 Alif Finandhita, S.Kom
  13. 13. Contohnya: LOCK T ABLE novel READ; Mengunci sebua h ta bel yaitu tabel novel, Penguncian di a tur a ga r tabel novel ha nya da pa t di baca ta npa bis a di upda te oleh tra nsa ks i lain. LOCK TAB LES nov el READ, p emi nj a ma n WRITE; Mengunci beberapa ta bel, yaitu tabel novel dan peminjaman. Ta bel novel di kunci untuk teta p da pat dibaca oleh transa ksi la in, Ta bel peminja ma n tida k da pat di akses sama seka li oleh Tra nsa ks i lain.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: UNLOCK [TAB LE/TAB LES] Jika penguncia n yang dila kuka n terha dap sa tu table, ma ka pelepasa n kunci mengguna kan UNLOCK TABLE Seda ngkan jika ya ng dikunci a da lah ba nyak ta bel, maka pelepasa n penguncian mengguna kan synta x UNLOCK TABLES 10 Alif Finandhita, S.Kom

×