Kamis, 13 Desember 2012

Optimasi Query



Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. KAlau tidak didukung dengan kecepatan akses yang memadai maka akan semakin menurun unjuk kerjanya. Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi oleh banyak factor.

A.      Optimasi pada Perintah SQL
Desain palikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung sengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesai database, seringkali lokasi fisik data tidak menjadi perhatian penting. KArena hanya desain logic saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkna struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan jalur pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
Index pada databse digunakan utnuk meningktakan kecepatan akses data. Pada saat query dijalankan, indec mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.

B.      Perencanaan Eksekusi
Pada database Oracle, informasi ini dapat dilihat dengan menggunakan perintah explain plan, yang akan memberi informasi tentang rencana eksekusi dari suatu query. Informasi ini disimpan dalam table PLAN_TABLE yang terdapat di skema user yang mengeksekusi perintah tersebut.

C.      Faktor Lian yang Berpengaruh terhadap Kecepatan Akses Data
                                     Faktor lain yang berpengaruh terhadapa kecepatan akses data, tidak hanya terletak pada optimasi perintah SQL, tetapi terhadap hal-hal lain yang berpengaruh. Diantaranya adalah optimasi apliakasi dan penggunaan cluster dan index.

D.      Optimasi Aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap suatu data usdah efisien atau belum. Efisien dalam hal penggunaan obyek mendukung kecepatan akses, seperti index dan cluster. Kemudian juga bagaimana cara databse di desain. Apakah desain database sudah melakukan normalisasi data secara tepat.
Terkadang normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Mislanya table yang hubungannya one-to-one dan sering di akses bersama lebih baik disatukan dalam satu table.

E.       CLUSTER dan INDEX
CLUSTER adalah suatu segment yang menyimpan data dari table yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa table yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelaah menganalisa table-table mana saja yang sering di-query secara bersamaan menggunakan perintah SQL.
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan indec yang melibatkan kolom tersebut. Pengguanan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih bail menggunakan index bitmap.

Structured Query Language Part II



Ø  SubQuery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). SubQuery sendiri adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL statement yang lain.
Ø  Pada subquery dengan banyak kolom, tiap baris dari main query dibandngkan dengan nilai dari subquery multiple-row dan multiple-column.
Ø  Pembandingan kolom dalam subquery banyak kolom dapat berupa pembandingan berpasangan (pairwise comparison) dan tidak berpasangan (nonpairwise comparison).
Ø  Query bisa diletakkan di dalam klausa FROm untuk membentuk table temporer dan dikenal juga dengan istilah inline view.
Ø  Korelasi subquery digunakan untuk pemrosesan baris per baris.
Ø  Klausa WITH dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Kalusa WITH juga dapat meningkatkan performasi.

Structured Quert Language Part I



A.      Pengenalan SQl
SQl untuk pertama kali diperkenalkan pada system R ( sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL dapat dijumpai pula pada berbagai platform dari mikrokomputer sampai mainframe. SQL bisa digunakan secara manunggal ataupun dikombinasikan pada bahasa lain seperti C dan Delphi. SQL juga telah menjadi bagian dari sejulah DBMS seperti Oracle, Sybase, MySQL, dan Informix.

B.      Elemen SQL
Elemen dasar pada SQL mencakup pernyataan, nama, tipe data, konstanta, dan fungsi bawaan.
1.       Pernyataan ( Statement )
Pernyataan adalah salah satu perintah pada SQL yang meminta suatu tindakan kepada DBMS. Dalam SQL setidaknya terdapat 30 pernyataan, antara lain :
-          ALTER            : Mengubah struktur table
-          COMMIT      : Mengakhiri sebuah eksekusi transakasi
-          CREATE         : Menciptakan table, indeks, atau pandangan
-          DELETE          : Mengahapus baris pada table
-          DROP            : Menghapus table, indeks, atau pandangan
-          GRANT         : Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna
-          INSERT          : Menambahkan sebuah baris pada table
-          REVKE           : Membatalkan hak terhadap basis data
-          ROLLBACK   : Mengembalikan ke eadaan semula sekiranya suatu transaksi gagal dilaksanakan
-          SELECT          : Memilih baris dan kolom pada table
-          UPDATE       : Mengubah nilai pada sebuah baris

2.       Nama
Nama disini digunakan untuk memberikan suatu identitas pada objek-objek dalam DBMS. Contohnya seperti table, kolom, dan pengguna.

3.       Tipe Data
Untuk setiap data pasti memiliki tipe datanya masing-masing. Beberapa tipe data tersebut antara lain :
a.       Untuk tipe data  numeric :
-          STNYINT                       : Nilai integer yang sangat kecil
-          SMALLINT                   : Nilai integer yang kecil
-          MEDIUMINT              : Integer dengan nilai medium
-          INT                                 : Integer dengan nilai standart
-          BIGINT                          : Integer dengan nilai besar
-          FLOAT                           : Bilangan decimal dengan single precission
-          DOUBLE                       : Bilangan decimal dengan double precission
-          DECIMAL (M,D)        : Bilangan float(decimal) yang dinyatakan seabagai string, M adalah jumlah digit yang disimpan dalam suatu kolom, N adalah jumlah digit dibelakang koma

Dalam tipe data numeric terdapat dua atribut yaitu signed dan unsigned, yang panjang range di setiap tipe datanya berbeda-beda.
TIPE
SIGNED
UNSIGNED
TINYINT
-128 s/d 127
0 s/d 2555
SMALLINT
-32768 s/d 32767
0 s/d 65535
MEDIUMINT
-8388608 s/d 8388607
0 s/d 16777215
INT
-2147483648 s/d 2147483647
0 s/d 4294967295
BIGINT
-9223372036854775808 s/d 9223372036854775807
0 s/d 1844674407370955615
FLOAT
Minimum : 1.175494351e-38
Maksimum : 3.402823466+38
DOUBLE
Minimun : 2.2205738585072014e-308
Maksimum : 1.797631348623457e+308
DECIMAL
Tergantung pada nilai M dan D

Signed adalah data yang disimpan dalam sautu kolom dapat berupa data negative dan positif.
Unsigned digunakan agar data yang dimasukkan bukan data negative (>=0). Tipe data float dapat dinyatakan dengan unsigned.

b.      Untuk tipe data string :
-          CHAR(n)                       : String karakter dengan panjang yang tetap, yaitu n dan ukuran maksimumnya adalah 1 M byte
-          VARCHAR(n)              : String karakter dengan panjang yang tidak tetap, maksimum n dan ukuran maksimumnya adalah 1 M byte
-          TINYBLOB                    : BLOB (Binary Large Object) yang sangat kecil dan ukuran maksimumnya adalah28-1 byte
-          BLOB                             : BLOB berukuran kecil dan ukuran maksimumnya adalah 216-1 byte
-          MEDIUMBLOB           : BLOB berukuran sedang dan ukuran maksimumnya adalah 224-1 byte
-          LONGBLOB                 : BLOB berukuran besar dan ukuran maksimumnya adalah232-1 byte
-          TINYTEXT                     : String tect yang sangat kecil dan ukuran maksimumnya adalah 28-1 byte
-          TEXT                              : String berukuran kecil dan ukuran maksimumnya adalah216-1 byte
-          EDIUMTEXT                                : String berukuran sedang dan ukuran maksimumnya adalah224-1 byte
-          LONGTEXT                  : String berukuran besar dan ukuran maksimumnya adalah232-1 byte
-          ENUM                           : Enumerasi, kolom dapat diisi dengan satu member enumerasi dan ukuran maksimumnya adalah65535 anggota
-          SET                                 : Himpunan, kolom dapat diisi dengan beberapa nilai anggota himpunan dan ukuran maksimumnya adalah64 anggota himpunan

c.       Tipe data tanggal dan jam :
TYPE
Range
Format
Date
“1000-01-01” s/d “9999-12-31”
“0000-00-00”
Time
“-832:59:59” s/d “838:59:59”
“00:00:00”
Datetime
“1000-01-01  00:00:00” s/d “9999-12-31 23:59:59”
“0000-00-00 00:00:00”

4.       Konstanta
Konstanta menyatakan nilai yang tetap.

5.       Ekspresi
Ekspresi adalah segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung nilai.
Simbol-simbol yang digunakan dalam operasi aritmetika diantaranya adalah :
a.       *             : Perkalian
b.      /              : Pembagian
c.       +             : Penjumlahan
d.      -              : Pengurangan

6.       Agregate Function (Fungsi Agregat)
        Fungsi adalah sebuah subprogram yang mengahsilkan suatu nilai jika dipanggil. Fungsi agregat sendiri berarti fungsi standar di dalam SQL, suatu fungsi dimana digunakan untuk melakukan summary, fungsi statistic yang dikenakan pada suatu table atau query.
a.       AVG(ekspresi)                  :Fungsi ini digunakan untuk mencari rata-rata.
b.      COUNT(x)                           : Fungsi ini digunakan untuk menghitung jumlah record yang ada dalam suatu table
c.       MAX(ekspresi)                  : Fungsi ini digunakan untuk mencari nilai terbesar
d.      MIN(ekspresi)                   : FUngsi ini digunakan untuk mencari nilai minimum
e.      SUM(ekspresi)                  : Fungsi ini digunakan untuk mendapatkan nilai total pada suatu kolom

C.      Kelompok Pernyataan SQL
Terbagi menjadi 3 jenis yaitu DDL, DML, dan DCL.
1.       DDL (Data Definition Language)
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, table, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar table. Yang termasuk dalam kelompok ini antara lain :
-          CREATE         : Untuk membuat sebuah database
-          DROP            : Untuk menghapus sebuah database yang telah dibuat sebelumnya
-          ALTER            : Untuk mengubah struktur table

2.       DML (Data Manipulation Language)
DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data. Perintah yang termausk dalam kelompok ini antara lain :
-          INSERT          : Untuk memberikan nilai pada suatu table
-          DELETE          : Untuk menghapus data
-          UPDATE       : Untuk mengubah data yang sudah dimasukkan sebelumnya
-          SELECT          : Untuk mengaktifkan table sebelum dpat diedit