Manajemen Transaksi A. Konsep Transaksi 1. Membuat Tabel account dengan type Innodb

dokumen-dokumen yang mirip
Manajemen Transaksi. Praktikum Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom

MODUL 10 TRANSACTION

Modul Praktikum Sistem Basis Data 2010

MODUL I PENGENALAN MYSQL

BAB V IMPLEMENTASI DAN PENGUJIAN

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc.

Administrasi Basis Data. Transaksi dan Lock. Yoannita

MySQL Databases. Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP. Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom

TUGAS PRAKTIKUM SISTEM BASIS DATA

BAB IV IMPLEMENTASI DAN PENGUJIAN

CARA MENGGUNAKAN SELECT QUERY PADA MYSQL

LAMPIRAN E FORMAT TABEL MYSQL

MODUL PRAKTIKUM BASIS DATA TEKNIK INFORMATIKA UIN SUNAN KALIJAGA YOGYAKARTA 2011 PENGENALAN DATABASE MYSQL

Pertemuan IX MANAJEMEN TRANSAKSI

TUGAS I PRAKTIKUM SISTEM BASIS DATA. Nama: Krisna Pandu Wibowo( )

MySQL AL AZHAR COMPUTER CLUB

Praktikum Basis Data (Database Server MySQL) Bekerja Dengan Tabel

Tutorial Singkat MySQL Menggunakan AppServ versi for Windows

Tutorial Singkat MySQL

Transaction & Conccurency

Perintah MySQL Lanjutan

PERINTAH DASAR MySQL

MODUL VIII BASIS DATA TRANSACTION

MySQL J A M K E T I G A

Seri 01 : Belajar Database MySQL

Agus Setiadi : ( ) Bambang Dimas Ermanto : ( ) Mata Kuliah : Pemprograman Generasi 4

PRAKTIKUM SISTEM BASISDATA

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

By Mrs Imana Malia Kondou, S.T. missimanakondou.wordpress.com

( Dari Ms-DOS windows, diasumsikan mysql client berada pada direktori tersebut.) mysql ( dari Linux). mysql --help

TUGAS PRAKTIKUM SISTEM BASIS DATA

Database. Danu Wira Pangestu 1. Mengenal Database. Lisensi Dokumen:

TUGAS PRAKTIKUM SISTEM BASIS DATA

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

Database Systems: Lab. Actvity 3: Fungsi-Fungsi MySql Advance. Pendahuluan. Pendahuluan

Untuk menjalankan Mysql secara konpensional jalankan Mysql.exe pada direktori Mysql\Bin. Akan tampak tampilan sebagai berikut:

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

Contoh SQL Constraint

Perintah - Perintah Dasar Pada MySQL

Pengenalan Structured Query Language

Database Systems: Lab. Actvity 1: Database Design. Merancang Database. Merancang Database. Tipe Tabel MySQL.

KapitaSelekta. (KBKI82127, 2 sks) Materi : Pengenalan MySQL

PRAKTIKUM SISTEM BASIS DATA

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

B a s i s D a t a C H A P T E R. SQL Operasi DML. Arif Basofi PENS 2015

Modul 2. Database Menggunakan Primary Key, Unique, Auto Increment, Alter-Add dan Alter-Drop. Disusun oleh. Sri Siska Wirdaniyati JURUSAN STATISTIKA

LAPORAN PRAKTIKUM MODUL 1 PENGENALAN MYSQL

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Praktikum MONITORING AND RESOLVING LOCK CONFLICTS. Tujuan :

Pertemuan VI F U N C T I O N

MODUL 4 INTERNET PROGRAMMING DATABASE

Sistem Basis Data. Prepared by LittleRadita STMIK- AUB Surakarta

Pertemuan 12 Pengenalan Structured Query Language

Contoh SQL Constraint

STRUCTURE QUERY LANGUAGE (SQL)

MySQL. Pemrograman Web/MI/D3 sks 1

Transaksi. by: Ahmad Syauqi Ahsan

PRAKTIKUM SISTEM BASISDATA. Disusun Oleh : Anggi Nurcahyo ( )

Kusnawi, S.Kom, M.Eng

Oracle Academic Initiative

Transaksi Semester Ganjil 2014 Fak. Teknik Jurusan Teknik Informatika. Caca E. Supriana, S.Si.,MT. Si

TRIGGER. Tujuan Mata Kuliah. Tools yang digunakan. Sesi7 : TRIGGER. Praktikum Pemrograman Client Server Database Hadi Kusumah, S.T.

Agenda SQL. Pemakai SQL. Kemampuan SQL 02/12/2010 STRUCTURED QUERY LANGUAGE (SQL) Structured Query Language (SQL) (Pert. 9)

TUGAS 1 PRAKTIKUM SISTEM BASIS DATA

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal.

15-Jan DATABASE - MySQL. Database. Constraints. Tujuan: Memahami perintah-perintah dasar DDL dan DML

Jobsheet SQL Dasar : Hari Zulianto, ST [Year]

Praktikum Sistem Basis Data MYSQL. Gentisya Tri Mardiani, S.Kom

PENGENALAN SINTAKS DASAR DALAM MySQL

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

Gambar Layar pertama untuk pemecahan masalah Lost Update

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

Bagian 1 Dasar Menguasai Database MySQL

Praktek Pemrograman Web

BAB 5 MANIPULASI DATA

TRIGGER TRIGGER 5/29/2017 HANI IRMAYANTI, S.KOM

Praktikum Sistem Basis Data MYSQL. Gentisya Tri Mardiani, S.Kom., M.Kom

MySQL Full-Text Searching

Database Management System. Program yang memungkinkan item-item dalam suatu database disusun, diolah dan diperbaharui

_basis_data. 10 rows in set (0.24 sec)

PENGONTROLAN BERBASIS KOMPUTER

Nama : Parisaktiana Fathonah NIM : Kelas : Prak Sistem Basis Data TI-2 B malam

Pengertian Query. Query adalah perintah-perintah untuk mengakses data pada sistem basis data

[PRAKTIKUM BASIS DATA TERDISTRIBUSI D3 TI UNS]

LAPORAN PRAKTIKUM SISTEM BASIS DATA

Arsitektur Basis Data Oracle

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

Konsep Sistem Informasi B. BAB 2 - SQL Overview

MANAJEMEN TRANSAKSI. Alif Finandhita, S.Kom

Pertemuan VII TRIGGERS

BAB IV ANALISIS DAN PERANCANGAN

MODUL II. Instalasi OracleXE Dan SQL

STUPID LOGIC PROGRAMMING II

Praktikum TRIGGER. Tujuan :

LAPORAN PRAKTIKUM SISTEM BASIS DATA

MySQL. Setelah Anda melakukan tahapan-tahapan di atas Anda akan dapatkan screen seperti ini

Mengenal Operasi Dasar SQL

Modul 6 Function dan Trigger

Transkripsi:

Manajemen Transaksi A. Konsep Transaksi Transaksi adalah sebuah unit dari eksekusi program yang mampu mengakses dan mengupdate berbagai data yang memiliki kaitan logika transaksi itu sendiri dimana dalam menjaga konsitensi data secara terintegrasi dipertahankan. Sebuah transaksi harus menghasilkan konsistensi database jika sebuah transaksi tersebut sudah dijalankan, atau dengan kata lain setelah transaksi selesai maka database harus kembali konsisten. Konsistensi suatu database berkaitan erat dengan integritas data, sehingga untuk menjamin integritas tersebut suatu database dalam menjalakan sebuah transaksi harus memiliki sifat ACID : 1. ATOMIK : Dimana semua operasi dalam transaksi harus bekerja secara utuh/total atau tidak bekerja sama sekali (artinya pekerjaan transaksi tidak boleh dikerjakan sebagian). 2. CONSISTEN : Dampak eksekusi dari sebuah trnasaksi harus menjamin keadaan data yg konsisten. 3. ISOLASI : Pada sejumlah Transaksi yang terjadi secara bersamaan, setiap transaksi tidak boleh terpengaruh transaksi lainnya yang juga sedang berjalan walaupun berhubungan atau menujun pada database yang sama. Hasil transaksi sementara harur terjaga dan terlindungi dari eksekusi-eksekusi yang lain. 4. DURABILITY : Setelah terjadinya transaksi maka akan diikuti update atau perubahan data pada database, maka perubahan tersebut harus tetap bertahan dan dianggap paling valid dan konsisten. PRAKTEK : Dalam Basis Data Transaksi merupakan satuan unit kerja yang berisi perintahperintah, yang dimulai dengan klausa BEGIN TRANSACTION dan diakhiri dengan COMMIT atau ROLLBACK. 1. Membuat Tabel account dengan type Innodb Type table InnoDB adalah salah satu tipe table dalam MySql yang mengadopsi Enggine Oracle, (beberapa type table dalam my saql adalaha Heap, ISAM, MERGE, MyISAM, BDB dll) namun beberapa kemampuannya terbatas. Type Tabel

InnoDB memungkinkan kita memakai transaksi yang mendukung ACID dan memiliki fasilitas row level locking. Type Tabel InnoDB ini telah mendukung kemampuan-kemampuan dalam pengolahan data yg besar dengan sifat Transaction-Safe diantara memiliki kemampuan Commit, Rollback dan Crash Recovery. Kemampuan kemapuan ini dirancang untuk kinerja yang maksimum ketika memproses data data dengan volume besar. Type table ini memiliki kemampuan automatic crash recovery, namun tidak dapat disetup dipoint mana recovery ini dilakukan layaknya chek point recovery pada Oracle. Untuk mengechek apakah InnoDb ada pad MySql: Mysql> show variables li %have% Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.22-community-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show variables like '%have%'; +-----------------------+--------------+ Variable_name Value +-----------------------+--------------+ have_archive YES have_bdb NO have_blackhole_engine NO have_compress YES have_crypt NO have_csv NO have_example_engine NO have_federated_engine NO have_geometry YES have_innodb YES have_isam NO have_ndbcluster NO have_openssl DISABLED have_query_cache YES have_raid NO

have_rtree_keys YES have_symlink YES +-----------------------+------------------+ 17 rows in set (0.12 sec) MySql yang didukung Type InnoDb memiliki variabel lingkungan yang disebut autocmmit. Secara default, autocommit diatur ke 1. Jika autocommit di setup ke, kita tidak dapat menjalankan transaksi dengan type table apapun. Dalam Hal ini, Mysql menganggap setiap pernyataan SQL sebagai transaksi tersendiri. Agar dapat memakai sekumpulan perintah/pernyataan transaksi dan dianggap masingmasing tidak berdiri sendiri, maka kita harus meng-off kan autocommit. Nilai autocommit diatur atau diset ke 0; MySql> SET autocommit=0; Contoh Praktek Seder hana tabel dibawah ini : Tabel berisi dua kolom yaitu number dengan tipe data integer,merupakan primary key, autoincrement dan tidak diijinkan nilai Null. Kolom perintahnya sebagai berikut : balance bertipe float, create table account ( number int not null auto_increment primary key, balance float ) type = InnoDB; 2. Insert Data Pada tabel account Perintah di bawah dipergunakan untuk melakukan insert data pada tabel account, karena kolom number autoincrement maka data yang dimasukkan hanya pada kolom balance: insert into account (balance) values (0.0); insert into account (balance) values (1000.0); insert into account (balance) values (2000.0); Hasil dari insert data tersebut adalah :

mysql> select * from account; +--------+---------+ number balance +--------+---------+ 1 0 2 1000 3 2000 +--------+---------+ 3 rows in set (0.05 sec) 3. Operasi Update data pada tabel account Seleksi balance pada tabel account dengan number 2 mysql> select balance from account where number=2; +---------+ balance +---------+ 1000 +---------+ Update balance menjadi 1100 mysql> update account set balance = 1100 where number = 2; Update balance dengan menambahkan 500 mysql> update account set balance = balance + 500 where number = 2; Setiap Query tunggal seperti di atas bersifat atomik, sebelum satu perintah selesai dieksekusi tidak ada query lain yang dapat melakukan interupsi terhadap perintah tersebut. Update data dengan operasi transfer data 1000 dari account number 2 ke account number 1.

Apabila terjadi kasus gangguan setelah proses update data pada account number 1, maka update data account number 1 gagal. Sehingga data pada account 2 tidak valid. Karena perintah tersebut terdiri dari dua perintah sehingga tidak atomik. ALTERNATIFNYA : Alternatif yang lain adalah dengan membuat dua perintah tersebut menjadi perintah tunggal (perintah tunggal bersifat atomik). mysql>update account as source, account as dest set source.balance = source.balance - 1000, dest.balance = dest.balance + 1000 where source.number = 2 and dest.number = 1; Pada perintah tersebut dipergunakan dua buah alias pada tabel account yaitu source dan dest. Dengan menggunakan dua buah alias, dua perintah dapat dijadikan menjadi satu buah perintah sehingga apabila satu perintah gagal maka semua gagal. 4. Update menggunakan manajemen transaksi Namun Dalam banyak kasus metode alternative diatasdi atas tidak bisa diterapkan untuk kasus yang lain, artinya peluang kegagalan masih sangat terbuka lebar. Solusinya adalah dengan menggunakan Manajemen Ttransaksi: begin transaction; commit; Atau dengan mengganti perintah BEGIN dengan START.

Start transaction; commit; Operasi Update data dapat dibatalkan dengan memberikan perintah ROLLBACK pada transaksi tersebut : start transaction; select balance from account where number = 2; rollback; Pada perintah tersebut karena account number nilainya menjadi -1000 setelah operasi update dilakukan maka operasi dibatalkan dengan perintah ROLLBACK. 5. Autocommit mode Secara default mysql mendukung autocommit mode. Setiap perintah manipulasi(update,insert dll) akan dianggap sebagai perintah yang diakhiri dengan commit. Akan tetapi autocommit mode dapat dihilangkan dengan oleh user. Untuk menghilangkannya berikan perintah: mysql> set autocommit=0; Jika perintah ini telah diberikan maka perintah-perintah tunggal harus diakhiri dengan commit secara manual jika akan disimpan. Apabila akan dibatalkan bisa diberikan perintah Rollback secara manual pula. Setelah autocommit di set menjadi 0 berikan perintah berikut :

Proses di atas tidak akan disimpan apabila belum ada klausa COMMIT yang mengakhiri perintah tersebut. Apabila akan disimpan maka perintah tersebut adalah : begin transaction; commit; begin transaction commit; Untuk mengembalikan autocommit ke default mysql perintah yang diberikan adalah : mysql> set autocommit=1; 6. Menggunakan Lock Untuk mencegah interferensi antar pengguna/program aplikasi yang melakukan manipulasi pada database digunakan metode isolasi menggunakan klausa Lock. Contoh : lock tables account write; select balance from account where number = 2; update account set balance = 1500 where number = 2; unlock tables; Lakukan operasi manipulasi melalui terminal lain atau komputer lain. Sebelum ada perintah unlock diberikan user/program lain tidak dapat melakukan pengubahan pada tabel account. 7. Implementasikan Manajemen transaksi pada aplikasi tabel penjualan dan tabel Stok, apabila ada barang yang dijual maka akan berakibat pada pengurangan jumlah barang pada tabel stok. Tabel Stok Kode_Barang Nama_Barang Jumlah

Tabel Penjualan Kode_Barang Nama_Barang Jumlah a. Buat tabel di atas dengan type innodb b. Insert data pada masing-masing tabel c. Update data pada masing-masing tabel dengan menggunakan manajemen transaksi. d. Buat mekanisme Lock pada tabel e. Seleksi stok barang yang jumlahnya noll.