web widgets

Artikel ini saya buat dengan tujuan menyelesaikan tugas besar 1 saya di salah satu universitas yang berada di jakarta barat meruya. perkenalkan nama saya
## Nama : Mohamad Nur Wahyuddin
## NIM : 41519110055
## Fakultas : Ilmu komputer
## Jurusan : Teknik informatika


Berhubung nim saya ganjil maka saya dapat tugas tentang membuat artikel tentang Optmasi Query, Optimasi perintah SQL, informasi jalur akses query, faktor-faktor yang berpengaruh terhadap kecepatan akses data.

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 faktor.   Pada bab ini akan membahas tentang optimasi query serta faktor-faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses data.

## Optimasi Query


     Optimasi Query adalah suatu proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif. Optimasi query mencakup beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data.
     Tujuan dari optimasi query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.



Query dapat dilakukandengan mengoptimalkan ekspresi Aljabar Relasional seperti :
[x] Selection (σ)
[x] Projection (̟)
[x] Cartesian Product / Cross Product (X)
[x] Union (∪)
[x] Set-Difference (-)


## Optimasi perintah SQL

     Ada banyak cara yang dapat dan harus dilakukan agar proses server database dapat berlangsung cepat. Dalam pengembangan aplikasi database, hal ini biasa disebut dengan istilah performance tuning, karena berkenaan dengan kinerja/performance database. Dalam Oracle, dikenal banyak tuning untuk mendapatkan kinerja yang optimal. Beberapa di antaranya adalah instant tuning, memory tuning, sql tuning, dan sebagainya.Keberhasilan pengembangan aplikasi database yang besar berulang kali menjadi terkesan kurang dihargai, apabila ternyata database tersebut relatif lambat memberikan data yang diperlukan. Sebenarnya hal ini dapat dimaklumi apabila kita memahami internal database.

     Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut.   Dalam mendesain  database,  seringkali  lokasi  fisik  data  tidak  menjadi  perhatian  penting. Karena hanya desain logik saja yang diperhatikan.   Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data.  Inti dari optimasi query adalah meminimalkan  “jalur” pencarian  untuk menemukan  data yang disimpan dalam lokasi fisik.

     Index pada database digunakan untuk meningkatkan kecepatan akses data.  Pada saat  query  dijalankan,   index  mencari  data  dan  menentukan   nilai  ROWID  yang membantu menemukan lokasi data secara fisik di disk.  Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan  unjuk kerja dalam hal ini kecepatan akses
data.

     Misal  digunakan  index  yang  melibatkan  tiga  buah  kolom  yang  mengurutkan kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut : 


CREATE INDEX idx_kota_prop_kodepos

ON karyawan(kota, propinsi, kode_pos)

TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :

SELECT * FROM mahasiswa WHERE propinsi=’DKI Jakarta’;

Pada  saat  melakukan  query  ini,  index  tidak  akan  digunakan  karena  kolom  pertama (kota) tidak digunakan dalam klausa WHERE.   Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut propinsi.  Selain itu, proses pencarian data akan lebih cepat  jika data terletak  pada block  tabel yang berdekatan  daripada  harus mencari di beberapa datafile yang terletak pada block yang berbeda.

Misal pada perintah SQL berikut ini : 

SELECT * FROM mahasiswa

WHERE id BETWEEN 1010 AND 2010;

     Query ini akan melakukan “scan” terhadap sedikit data block jika tabel karyawan diatas diurutkan berdasarkan kolom id.   Untuk mengurutkan  berdasarkan kolom yang berbeda-beda  maka  tabel  disimpan  dalam  flat  file,  kemudian  tabel  diekspor  dan diurutkan sesuai kebutuhan.

     Alternatif  yang  lain,  bisa  digunakan  perintah  untuk  membuat  tabel  lain  yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :

CREATE TABLE db_mahasiswa

AS SELECT * FROM mahasiswa

ORDER BY id;

Pada SQL diatas, tabel db_mahasiswa  berisi data yang sama dengan tabel mahasiswa hanya datanya terurut berdasarkan kolom id.

## Informasi jalur akses Query

     Pada Database Oracle, informasi untuk melihat jalur akses yang akan digunakan untuk eksekusi database saat melakukan query dapat dilihat dengan menggunakan perintah explain plain. Informasi ini disimpan dalam tabel PLAN_TABLE yang terdapat di skema user yang mengeksekusi perintah tersebut.
     
     Bagaimana   cara   melihat   jalur   akses   yang   akan   digunakan   database   saat melakukan   query   ?   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 tabel PLAN_TABLE  yang terdapat di schema user  yang mengeksekusi perintah tersebut.

     Sebelum   melakukan    perintah   explain   plan,   terlebih   dahulu   buat   table PLAN_TABLE    dengan    menggunakan    script    utlxplan.sql    yang    diambil    dari \%ORACLE_HOME%\RDBMS\ADMIN.

     Setelah itu table PLAN_TABLE dapat digunakan seperti contoh berikut : 

SQL> explain plan
Set statement_id=’test1’ 
Into plan_table for
Select * from karyawan where gaji=2000000;

Dalam  PLAN_TABLE   rencana  eksekusi  diatas  dikenal  dengan  nama  test1  yang terdefinisi pada kolom statement_id.

Untuk melihat rencana eksekusi dari test1, digunakan perintah SELECT berikut : 

SELECT LPAD(’ ’,2*Level)||Operation||’ ’||Options||’ ’||Object_Name Q_Plan 
FROM plan_table
WHERE statement_id=’test1’

CONNECT BY PRIOR id=parent_id AND statement_id=’test1’ 
START WITH id=0 AND statement_id=’test1’;

(+) Contoh hasil dari eksekusi query tersebut :

Q_PLAN
----------------------------------------------
SELECT STATEMENT
TABLE ACCESS FULL mahasiswa

Output tersebut dibaca mulai dari yang indent-nya paling dalam yaitu : TABLE ACCESS FULL mahasiswa. Dikarenakan klausa WHERE melibatkan kolom gaji namun kolom gaji tidak ada index-nya, maka Oracle melakukan full table scan. Setelah seluruh tabel mahasiswa selesai dibaca, selanjutnya adalah SELECT STATEMENT yang berfungsi untuk menampilkan hasil query.

## Faktor lain yang berpengaruh terhadap kecepatan akses data


     Faktor lain yang berpengaruh terhadap kecepatan akses data, tidak hanya terletak pada optimasi perintah SQL, tapi terhadap hal-hal lain yang berpengaruh.  Diantaranya adalah optimasi  aplikasi dan penggunaan  cluster dan index.   Hal yang akan dibahas dalam  optimasi  query  berikut  ini tidak  melibatkan  penggunaan  komponen  yang  ada dalam Arsitektur  database  engine,  misal pada database  Oracle  kecepatan  akses  data dipengaruhi oleh penyesuaian pada shared pool, buffer cache, redo log buffer dan sistem operasi yang digunakan.

(X) OPTIMASI APLIKASI

     Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap  data sudah efisien.   Efisien dalam hal penggunaan  obyek yang mendukung kecepatan akses, seperti index atau cluster.  Kemudian juga bagaimana cara database di- desain.  Apakah desain database sudah melakukan normalisasi data secara tepat.

Kadangkala  normalisasi  sampai  level  yang  kesekian,  tidak  menjamin  suatu desain yang efisien.  Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi.   Misalnya tabel yang hubungannya one-to- one dan sering diakses bersama lebih baik disatukan dalam satu tabel.

(X) CLUSTER DAN INDEX

     Cluster  adalah  suatu  segment  yang  menyimpan  data  dari  tabel  yang  berbeda dalam  suatu  struktur  fisik  disk  yang  berdekatan.    Konfigurasi  ini bermanfaat  untuk akses data dari beberapa tabel yang sering di-query.   Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.
Jika aplikasi sering melakukan  query dengan menggunakan  suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut.  Penggunaan 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 baik menggunakan index bitmap.

(#) Kesimpulan

  1. Data  yang  tersimpan  dalam  jumlah  yang  sangat  besar,  Terdapat  aturan  system informasi  dalam  organisasi,  system  basis  data  dilihat  sebagai  bagian  system informasi dalam aplikasi berskala besar.
  2. Untuk meningkatkan unjuk kerja tidak hanya desain logik saja yang diperhatikan tapi juga struktur fisik penyimpanan data.
  3. Penggunaan    Index    pada   database    secara    tepat,    dapat    digunakan    untuk meningkatkan kecepatan akses data.
  4. Informasi tentang jalur akses yang digunakan oleh database untuk melaksanakan query dalam database Oracle dapat dengan menggunakan perintah explain plan.
  5. Selain optimasi perintah SQL, faktor lain yang berpengaruh  terhadap kecepatan akses data adalah optimasi aplikasi dan penggunaan cluster dan index.
  6. Pada sebuah database engine semisal pada database Oracle kecepatan akses data dipengaruhi  oleh  beberapa  komponen  arsitektur  pembentuknya  seperti  shared pool, buffer cache, dan redo log buffer.
  7. Optimasi aplikasi tergantung pada efisiensi penggunaan obyek yang mendukung kecepatan  akses  seperti  index  atau  cluster,  dan  normalisasi  data  pada  desain



Related Post :