Jumat, 29 November 2019

Pentingnya Optimasi Query

1. Pentingnya Optimasi Query Dalam Memanajemen 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.

Sehingga dalam melakukan sebuah manajemen database, optimasi query sangatlah diperlukan. Oleh karena itu, dengan melakukan optimasi query, sangat membantu dalam memanajemen database.

2. Ringkasan Optimasi Query atau SQL Tuning

Optimasi Query adalah suatu strategi penggunaan sumber sumber jalur query secara lebih efektif dan efisien dengan tujuan untuk seminimal mungkin total waktu yang digunakan ketika proses query berlangsung.


Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Dan SQL Tuning adalah upaya untuk memaksimalkan infrastruktur baik software ataupun hardware yang ada agar dapat berfungsi dengan optimal. Performance and Tuning sebenarnya memiliki dua tugas yang dijalankan berdampingan, performance bertujuan untuk memonitor kinerja dari infrastruktur. Hasil monitor ini akan ditindaklanjut dengan tuning sebagai upaya untuk mengoptimalkan kinerja.

3. Kesimpulan Optimasi Query atau SQL Tuning

Pada Optimasi Query yaitu meminimalkan "jalur" pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Dan pada SQL Tuning yaitu memaksimalkan infrastruktur software mauapun hardware agar dapat berfungsi dengan optimal.

Optimasi Query Dan SQL Tuning

1. Optimasi Query
Pengertian dan Tujuan

Optimasi Query adalah suatu strategi penggunaan sumber sumber jalur query secara lebih efektif dan efisien dengan tujuan untuk seminimal mungkin total waktu yang digunakan ketika proses query berlangsung. Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Faktor-faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses data dipengaruhi oleh banyak faktor seperti :

1.Optimasi Perintah SQL
Structured Query Language (SQL) adalah bahasa pemrograman yang memiliki tujuan khusus untuk mengelola data dalam sistem manajemen basis data relasional (DBMS).
Dalam melakukan optimalisasi perintah pada SQL kita harus mempertimbangkan aspek desain logik dan struktur penyimpanan data.Intinya dalam mengoptimalkan query adalah dengan meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.

Penggunaan Index pada database secara tepat, dapat 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, provinsi, dan alamat dari tabel siswa, sebagai berikut :

CREATE INDEX idx_kota_prov_alamat
ON siswa(kota,provinsi,alamat)
TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :
SELECT* FROM siswa WHERE kota=’Jawa Tengah’;

Pada saat melakukan query tersebut, 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 provinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari dibeberapa data file yang terletak pada block yang berbeda.

Misal pada perintah SQL berikut ini :

SELECT* FROM siswa
WHERE nis BETWEEN 06650 and 06660;

Query di atas akan melakukan “scan” terhadap sedikit data block jika tabel siswa diatas diurutkan berdasarkan kolom nis. 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 siswa_urut
AS SELECT* FROM siswa
ORDER BY nis;

Pada SQL diatas, tabel siswa_urut berisi data yang sama dengan tabel siswa hanya datanya terurut berdasarkan kolom nim.

2. 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 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 dapatdigunakan seperti contoh berikut :
SQL>explain plan
Set statement_id=’siswaexp’
Into plan_table for
Select * from SISWA where semester=5;
Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama siswaexp yang terdefinisikan pada kolom statement_id.
Untuk melihat rencana eksekusi dari siswaexp, digunakan perintah SELECT berikut :

SELECT LPAD(‘’,2*Level)| |Operation| |’ ‘| |Options| |’ ‘| |Object_Name Q_Plan
FROM plan_table
WHERE statement_id=’siswaexp’
CONNECT BY PRIOR id=parent_id AND statement_id=’siswaexp’
START WITH id=0 AND statement_id=’siswaexp’;

Contoh hasil dari eksekusi query tersebut :

Q_PLAN

SELECT STATEMENT
TABLE ACCESS FULL SISWA

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

3. Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
Faktor yang berpengaruh terhadap kecepatan akses data tidak hanya pada optimasi perintah SQL,tapi terhadap hal-hal lain yang berpengaruh.Faktor lain yang berpengaruh terhadap kecepatan akses data yaitu optimasi aplikasi dan penggunaan cluster dan index.
Diantaranya adalah optimasi aplikasi dan penggunaan cluster index.

  • Optimasi Aplikasi

Dalam pembuatan aplikasi yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien,yang dapat mendukung kecepatan akses seperti index dan cluster. Apakah desain database sudah melakukan normalisasi data secara tepat.Apakah aplikasi sudah sesuai aplikasi sudah berjalan secara optimal sesuai tujuan.Apakah query sudah optimal dan sesuai dengan aplikasi.

  • Cluster dan Index

Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dala suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di query. Cluster dimaksudkan untuk mengurangi keborosan dalam melakukan manajemen terhadap struktur data di dalam disk, sehingga sistem berkas tidak akan mengalokasikan sektor disk fisik, tetapi sekumpulan sektor yang saling bedekatan.

Indeks atau index dalam database (basis data) yaitu untuk meningkatkan kecepatan dalam meretrieve data, di suatu database, indeks atau index memungkinkan program database menemukan data di suatu tabel tanpa menelusuri seluruh tabel. 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.

2. SQL Tuning
Pengertian dan Tujuan

SQL Tuning adalah sebagai banyak bagian dari kinerja aplikasi sebagai database merancang dan tuning. Tidak peduli bagaimana menyempurnakan database atau bagaimana suara struktur database, Anda tidak akan menerima hasil query tepat waktu yang diterima kepada Anda, atau bahkan lebih buruk lagi, pelanggan, jika Anda tidak mengikuti beberapa pedoman dasar. Mempercayai kami, jika pelanggan tidak puas, maka Anda bisa bertaruh atasan Anda tidak akan puas baik.

Umumnya programmer, pada saat mengembangkan sebuah aplikasi database, pasti akan membuat sebuah database dan memasukkan beberapa data contoh ke dalamnya. Pada saat pengembangan, tidak ada masalah dan kelihatannya semua baik-baik saja, namun seiring berjalannya waktu, aplikasi mulai terkesan lambat dan bisa jadi sampai hang. Hal ini terjadi karena biasanya programmer tidak pernah melakukan load testing menggunakan data besar, dalam artian, jumlah row yang banyak.

Sumber :
http://henrywijayas.blogspot.com/2014/09/optimasi-query_28.html
https://visilubai.wordpress.com/2010/05/23/mempelancar-sql/
https://pojokprogrammer.net/content/performance-tuning-sederhana-di-mysql-menggunakan-index