• Tidak ada hasil yang ditemukan

PERBANDINGAN OPTIMASI QUERY DENGAN VIEW DAN INDEXED VIEW

N/A
N/A
Protected

Academic year: 2021

Membagikan "PERBANDINGAN OPTIMASI QUERY DENGAN VIEW DAN INDEXED VIEW"

Copied!
5
0
0

Teks penuh

(1)

PERBANDINGAN OPTIMASI QUERY

DENGAN VIEW DAN INDEXED VIEW

Kristina

1)

Wasino

2)

Tony

3) 1) 2)

Program Studi

Sistem Informasi Universitas Tarumanagara

Jl. Letjen S. Parman No. 1, Jakarta 11440 Indonesia

email : 1)[email protected] , 2) [email protected], 3) [email protected]

ABSTRACT

Processing of complex queries involving join operation on large database will require long response time, particularly if the query returns large amounts of data. Therefore, it is necessary to do query optimization. View can be an effective tool to simplify a complex query. However, using view which returns large result sets can lead to bad performance. SQL Server has the ability to make a special kind of view called indexed view. Indexed view or also known as materialized view is a view that has a unique clustered index. When unique clustered index created on the view, the view results will be stored in the database. Query performance can be improved significantly by creating an indexed view which involves a complex process with a large amounts of data, such as aggregation and join.

The research aims to prove performance benefits resulting from query optimization using indexed view. The experiments were conducted by testing and measuring response time for three types of query then compare the results. Queries that will be compared are query with view and query with indexed view. Experimental results proved that indexed view perform very well by improving response time when processing the query as compared to views.

Key words

Query optimization, indexed view, materialized view

1. Pendahuluan

Dalam basis data relasional sering dilakukan pengaksesan data terhadap beberapa tabel sekaligus. Proses pengaksesan dan pengolahan data yang berskala besar serta melibatkan banyak operasi join akan membutuhkan waktu yang cukup lama sehingga menyebabkan kinerja menjadi tidak efektif dan efisien. Optimasi query memberikan pemecahan untuk menangani masalah tersebut dengan cara menggabungkan sejumlah besar teknik – teknik dan strategi, yang meliputi transformasi logika dari query –

query untuk mengoptimisasi akses dan penyimpanan data

terutama pada basis data yang berskala besar.

View dapat menjadi alat yang efektif untuk

mempercepat dan menyederhanakan query kompleks. Bahkan, menggunakan view untuk beberapa tujuan penggunaan dapat membantu mengoptimalkan query. Namun, menggunakan view yang mengembalikan hasil dalam jumlah besar dan melibatkan operasi kompleks dapat memberikan kinerja yang buruk. Oleh karena itu, penggunaan view untuk proses yang lebih mengutamakan pada kinerja tidaklah efisien, namun berbeda apabila menggunakan materialized view (MV) [11].

Penggunaan MV untuk mempercepat pemrosesan

query merupakan ide yang telah ada sejak lama [8].

Konsep MV pertama kali diperkenalkan pada Oracle Database 8i. Microsoft telah mendukung fitur ini pada SQL Server 2000. Pada SQL Server, MV disebut dengan

indexed view karena MV dapat di-index dengan berbagai

cara [4]. View dimaterialisasi dengan menciptakan

unique clustered index pada view.

MV sangatlah bermanfaat dalam meningkatkan kinerja query [7]. MV dapat memberikan peningkatan waktu pemrosesan query yang signifikan, terutama untuk agregasi terhadap tabel dalam jumlah besar. Oleh karena itu, pada penelitian ini akan dibahas pengoptimasian

query dengan menggunakan indexed view sebagai upaya

untuk meningkatkan kinerja dan waktu respon query terhadap basis data yang berskala besar. Dalam penelitian ini dilakukan sejumlah pengujian dengan membandingkan waktu respon query yang mereferensikan langsung pada view dan indexed view, untuk mengetahui seberapa besar manfaat kinerja yang dihasilkan query dengan menggunakan indexed view.

2. Kajian Pustaka

2.1 Optimasi Query

Suatu aktivitas dalam memilih strategi eksekusi yang efisien untuk memproses query disebut sebagai Optimasi query [1]. Optimasi query merupakan aspek penting dari

query processing. Optimasi query bertujuan untuk

memilih query yang meminimalkan penggunaan sumber daya.

(2)

2.2 Index

Index adalah struktur data fisik yang terpisah yang

memungkinkan query untuk mengakses satu atau lebih baris data dengan cepat [9]. Index dapat memberikan manfaat dalam meningkatkan kinerja query secara signifikan. Clustered index menentukan urutan fisik dari data yang berada dalam tabel [2]. Clustered index menyimpan baris-baris data dalam tabel berdasarkan pada nilai key. Sedangkan, nonclustered index tidak menyimpan data tabel. Nonclustered index menyimpan

pointer terhadap data tabel sebagai bagian dari key index.

2.3 Index

View merupakan tabel virtual yang tidak harus ada

dalam basis data, tetapi dapat dihasilkan berdasarkan permintaan dari pengguna tertentu pada saat yang diinginkan [1]. View adalah hasil dinamik dari satu atau

lebih operasi relasional yang dilakukan pada tabel dasarnya untuk menghasilkan tabel yang lain. View bersifat dinamis, artinya jika tabel dasarnya mengalami perubahan, maka view akan langsung menunjukkan perubahan tersebut. Tujuan dari penggunaan view antara lain :

1. Menyediakan mekanisme keamanan yang fleksibel dan baik dengan menyembunyikan bagian basis data dari pengguna tertentu.

2. Memungkinkan pengguna untuk mengakses data dengan cara yang disesuaikan dengan kebutuhan, sehingga data yang sama dapat dilihat oleh pengguna yang berbeda dengan cara yang berbeda pada saat yang sama.

3. Menyederhanakan operasi yang rumit pada tabel dasar.

View memberikan beberapa manfaat, seperti meningkatkan keamanan dengan membatasi akses terhadap data dan mengurangi kompleksitas query. Namun, di sisi lain view juga memiliki kelemahan, salah satunya ialah dapat menurunkan kinerja apabila pendefinisian dilakukan dengan query yang kompleks dan melibatkan banyak tabel. Tetapi, view memberikan manfaat dengan mengurangi kompleksitas dan meningkatkan kinerja ketika diciptakan sebagai Materialized View.

Materialized view (MV) adalah view yang isinya

dikomputasikan dan disimpan [10]. MV seperti cache, yaitu salinan data yang dapat diakses dengan cepat [5]. Microsoft telah mendukung fitur MV pada SQL Server 2000, dan disebut sebagai indexed view. View ini dimaterialiasi dengan menciptakan unique clustered

index pada view yang ada. Setelah clustered index

dibuat, nonclustered index juga dapat dibuat sebagai

index tambahan.

Menggunakan index untuk meningkatkan kinerja

query bukanlah sebuah konsep baru, namun indexed view

memberikan manfaat kinerja tambahan yang tidak dapat diperoleh dengan menggunakan index standar. Indexed

view dapat meningkatkan kinerja query dalam cara – cara

berikut [6]:

1. Agregasi dapat dipre-komputasi dan disimpan dalam

index untuk meminimalkan komputasi tinggi selama

eksekusi query.

2. Tabel dapat dipre-join dan data yang dihasilkan disimpan.

3. Kombinasi dari join atau agregasi dapat disimpan Agregasi dan join yang sering dilakukan merupakan kandidat yang tepat untuk indexed view. Sebuah query dapat menjadi kandidat dari indexed view jika memerlukan waktu yang signifikan dan jumlah data besar untuk mendapatkan hasil query dengan cepat. Indexed

view akan bekerja sangat baik ketika data relatif statik

atau jarang diperbaharui. Sedangkan lingkungan transaksional tidak cocok untuk indexed view. Beberapa aplikasi yang tepat untuk pengimplementasian indexed

view yaitu : decision support workloads, data marts, data warehouses, basis data Online analytical processing (OLAP), data mining workloads

[

6].

3. Metode Penelitian

Pada penelitian ini, dilakukan pengujian dan pengukuran waktu respon terhadap tiga jenis query untuk kemudian dibandingkan waktu responnya. Jenis query yang akan dibandingkan adalah query dengan view dan

query dengan indexed view.

3.1 Data Penelitian

Pengujian terhadap sejumlah query dilakukan pada basis data AdventureWorksLT, menggunakan DBMS SQL Server 2008 Enterprise Edition. Serta menggunakan software Redgate SQL Data Generator, yang digunakan untuk melaksanakan proses generate data atau penambahan data, sebesar 1 juta baris data pada setiap tabel dalam basis data AdventureWorksLT. Proses generate ini berhasil menambahkan 1 juta baris data pada 5 buah tabel, ratusan baris data terhadap 4 buah tabel, dan 1 buah tabel yang gagal mengalami penambahan data. Basis data AdventureWorks yang semula berukuran 7,188MB setelah dilakukan proses generate data, mengalami penambahan ukuran menjadi 2,25GB.

3.2 Metode dan Teknik Indexed View

Sebelum menciptakan indexed view, terdapat beberapa hal yang perlu diperhatikan.

Berikut adalah pengaturan SET option yang harus dilakukan :

(3)

Tabel 1 Pengaturan SET Option

SESSION SET Option

ANSI_NULLS ON ANSI_PADDING ON ANSI_WARNING ON ARITHABORT ON CONCAT_NULL_YEILDS_NULL ON NUMERIC_ROUNDABORT OFF QUOTED_IDENTIFIER ON

View harus memenuhi persyaratan berikut sebelum

dapat dibuat clustered index :

1. Semua fungsi referensi (function yang didefinisikan oleh sistem dan user) yang digunakan oleh view harus

deterministic.

2. View harus mengacu pada tabel dasar.

3. View dan tabel dasar harus berasal dari basis data

yang sama.

4. View harus dibuat dengan option

SCHEMABINDING.

5. User-defined function (UDF) yang direferensikan

dalam view harus dibuat dengan option

SCHEMABINDING.

6. Pernyataan SELECT dalam view tidak dapat berisi klausa dan option berikut: DISTINCT, UNION, COMPUTE, TOP, ORDER BY, MIN, MAX, COUNT, SUM, subquery, derived table, atau OUTER.

Jika terdapat pernyataan GROUP BY, pendefinisian view harus :

1. Mengandung COUNT_BIG(*).

2. Tidak mengandung HAVING, CUBE, ROLLUP, atau GROUPING().

Indexed view dibuat dengan melakukan 2 langkah

proses berikut :

1. Membuat view menggunakan pernyataan CREATE

VIEW dengan klausa WITH SCHEMABINDING.

2. Membuat unique clustered index yang sesuai.

Unique clustered index dibuat pada kolom dari view

untuk menciptakan indexed view. Setelah unique

clustered index dibuat, sistem basis data mengalokasikan

penyimpanan untuk view, kemudian dapat dibuat tambahan nonclustered index. Nonclustered index pada

view dapat memberikan tambahan kinerja query.

Contoh query pembuatan indexed view :

CREATE VIEW vProduct WITH SCHEMABINDING AS

SELECT p.ProductID, p.Name AS ProductName,

SUM(p.ListPrice) AS Price,

SUM(p.StandardCost) AS Cost, COUNT_BIG(*) AS TotalRows

FROM SalesLT.Product p JOIN

SalesLT.ProductCategory pc ON

p.ProductCategoryID = pc.ProductCategoryID

JOIN SalesLT.ProductModel pm ON

p.ProductModelID = pm.ProductModelID GROUP BY ProductID, p.Name

CREATE UNIQUE CLUSTERED INDEX UCI_vP ON

vProduct (ProductID);

CREATE NONCLUSTERED INDEX NCI_vP ON vProduct (ProductID);

Pernyataan pertama merupakan perintah untuk membuat view bernama vProduct. Fungsi WITH SCHEMABINDING diperlukan untuk menjadikan view tersebut sebagai indexed view. Fungsi ini akan mengunci tabel dasar untuk mencegah terjadinya perubahan skema yang akan mempengaruhi view. Kolom – kolom output yang didefinisikan dengan ekspresi aritmatika atau ekspresi lainnya harus menggunakan klausa AS agar dapat direferensikan. Indexed view akan mematerialisasi fungsi agregasi ke dalam disk. Hal ini akan mengeliminasi kebutuhan untuk perhitungan fungsi agregasi selama eksekusi query.

Pernyataan kedua merupakan sintaks untuk membuat

clustered index. Setelah view dibuat, unique clustered index akan ditambahkan ke dalam view tersebut. Dengan

ditambahkannya unique clustered index pada view, sistem basis data mengalokasikan penyimpanan untuk

view tersebut. Pernyataan ketiga merupakan sintaks

untuk membuat nonclustered index, yaitu index tambahan bernama NCI_vP pada kolom ProductID.

3.3 Prosedur Pengujian

Jumlah query yang akan diujikan pada penelitian ini ialah 15 query yang masing-masing mereferensikan pada

view dan indexed view. Lima belas query ini dibagi

menjadi 3 jenis query, yaitu query join (QJ), query agregasi (QA), dan query join & agregasi (QAJ). Kemudian, 5 query dari setiap jenis query akan mengembalikan jumlah baris data yang berbeda, yang dibagi menjadi ratusan, ribuan, puluhan ribu, ratusan ribu, dan jutaan baris data. Pengujian ini dilakukan pada 2 komputer dengan spesifikasi yang berbeda. Berikut ini adalah spesifikasi dari kedua komputer.

1. Komputer 1

Processor Intel® Core™ i3 CPU M380 @2.53GHz Memory 2048MB RAM DDR3

Hardisk 500GB

VGA Intel® HD Graphics OS Windows 7 Ultimate 32-bit 2. Komputer 2

Processor Pentium® Dual-Core CPU E5700 @3.00GHz

Memory 2048MB RAM DDR3 Hardisk 250GB

VGA Intel® G41 Express Chipset OS Windows 7 Ultimate 32-bit

Setiap query akan diuji sebanyak 5 kali dan dan pada tiap pengujiannya, waktu respon query dicatat hingga eksekusi ke-5. Pembersihan cache dan buffer dilakukan di setiap awal pengujian. Dari hasil setiap pengujian, hanya waktu respon pertama dari setiap pengujian yang diambil dan dirata-ratakan. Sedangkan waktu eksekusi

(4)

yang kedua dan seterusnya tidak digunakan. Hal ini dikarenakan waktu eksekusi pertama tidak terpengaruh pada query plan dan cache yang mungkin tersimpan, karena setiap sebelum dilakukan pengeksekusian dilakukan pembersihan cache dan buffer.

4.

Hasil Pengujian

Berdasarkan hasil pengujian yang telah dilakukan terhadap 15 query yang masing – masing mereferensikan pada view dan indexed view, diperoleh perbedaan waktu respon terhadap setiap query. Berikut ini adalah tabel dan grafik yang menunjukkan perbedaan waktu respon tersebut.

Tabel 2 Waktu Respon Query pada Komputer 1

Query Waktu Respon Rata – rata (ms)

View Indexed View

Q1 117.6 56.2 Q2 19775.0 152.6 Q3 32186.2 53.0 Q4 9298.0 1949.6 Q5 27114.6 11642.8 Q6 11.6 7.4 Q7 8255.8 109.6 Q8 7906.2 42.6 Q9 8585.8 1164.0 Q10 11840.8 7008.4 Q11 18286.0 17.0 Q12 17979.8 19.8 Q13 27774.4 375.8 Q14 14561.6 1429.0 Q15 12432.0 7119.8

Tabel 3 Waktu Respon Query pada Komputer 2

Query Waktu Respon Rata – rata (ms)

View Indexed View

Q1 118.4 74.5 Q2 17343.2 126.2 Q3 16964.6 224.6 Q4 5740.2 1580.2 Q5 18919 11139.8 Q6 14.2 5.4 Q7 4948.2 118.8 Q8 5006.4 248.8 Q9 4825 1159.4 Q10 10206.8 8948.4 Q11 14944.4 97 Q12 14822.8 117.2 Q13 16510.2 337 Q14 12593.8 1295.8 Q15 10024 9006.8

Tabel 4 Waktu Respon Rata-Rata Query antara Komputer 1 dan Komputer 2

Query Waktu Respon Rata – rata (ms)

View Indexed View

Q1 118.0 65.4 Q2 18559.1 139.4 Q3 24575.4 138.8 Q4 7519.1 1764.9 Q5 23016.8 11391.3 Q6 12.9 6.4 Q7 6602.0 114.2 Q8 6456.3 145.7 Q9 6705.4 1161.7 Q10 11023.8 7978.4 Q11 16615.2 57.0 Q12 16401.3 68.5 Q13 22142.3 356.4 Q14 13577.7 1362.4 Q15 11228.0 8063.3 0 5000 10000 15000 20000 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 8 Q 9 Q 1 0 Q 1 1 Q 1 2 Q 1 3 Q 1 4 Q 1 5 W a k tu ( m s) Query

Waktu Respon Rata-Rata Pengujian Query

View Indexed View

Gambar 1 Grafik Waktu Respon Rata-Rata Query

Berdasarkan hasil waktu respon rata-rata pengujian, dapat diketahui besarnya kinerja peningkatan waktu respon yang dihasilkan oleh indexed view. Pengukuran kinerja dilakukan menggunakan rasio, yaitu query dengan indexed view n kali lebih cepat dari query dengan

view. Berikut adalah rumus rasio kinerja tersebut [3] :

...(1)

Keterangan :

n : Peningkatan Waktu Eksekusi

WEV : Waktu Eksekusi Query dengan View WEIV : Waktu Eksekusi Query dengan Indexed View Berikut ini adalah tabel kinerja peningkatan waktu eksekusi oleh indexed view terhadap view.

Tabel 5 Kinerja Peningkatan Waktu Eksekusi oleh Indexed View

n

=

WEV

(5)

Query Jumlah baris data Jenis Peningkatan Waktu (n) Q1 Ratusan Query Join 1.8 x Q2 Ribuan 133.1 x Q3 Puluhan Ribu 177.1 x Q4 Ratusan Ribu 4.3 x Q5 Jutaan 2 x Q6 Ratusan Query Agregasi 2 x Q7 Ribuan 57.8 x Q8 Puluhan Ribu 44.3 x Q9 Ratusan Ribu 5.8 x Q10 Jutaan 1.4 x Q11 Ratusan Query Agregasi & Join 291.5 x Q12 Ribuan 239.4 x Q13 Puluhan Ribu 62.1 x Q14 Ratusan Ribu 10 x Q15 Jutaan 1.4 x

Dari hasil pengujian, diperoleh bahwa query dengan

indexed view memiliki waktu eksekusi yang lebih cepat

dibandingkan dengan view pada semua jenis query. Tabel 4 menunjukkan bahwa penggunaan indexed view dapat meningkatkan kinerja query dalam mengakses data hingga 200 kali lebih cepat dibandingkan dengan mengakses view. Peningkatan waktu terbesar terjadi pada

query agregasi dan join.

5.

Kesimpulan

Berdasarkan hasil pengujian, dapat disimpulkan bahwa : 1. Indexed view terbukti meningkatkan kinerja query

dalam mengakses data secara signifikan.

2. Indexed view bekerja meningkatkan kinerja secara

optimal pada jenis query agregasi dan join (QAJ). 3. Indexed view terbukti lebih cepat dibandingkan

dengan view dalam pemrosesan query dengan persentase peningkatan waktu yang mampu mencapai hingga 200 kali lebih cepat.

4. Indexed view tetap berkinerja lebih cepat pada

perangkat dengan spesifikasi yang berbeda.

REFERENSI

[1] Connolly, T.M., Carolyn, E.B., 2010, “Database Systems : A Practical Approach to Design, Implementation and Management”, Addison-Wesley, Longman Inc, USA. [2] Dewson, R., 2008, “Beginning SQL Server 2008 for

Developers : From Novice to Professional “, Apress, USA.

[3] Godse, A.P., Godse, D.A., 2006, “Computer Organization Architecture”, Technical Publications, India. [4] Goldstein, J., Larson, P., Mei 2001, “Optimizing Queries

Using Materialized Views : A Practical, Scalable Solution”, Proceeding ACM SIGMOD, 331-342. [5] Gupta, A., Mumick, I.S., 1995, “Maintenance of

Materialized Views: Problems, Techniques and Applications”, IEEE Quarterly Bulletin on Data Engineering.

[6] Hanson, E., Susan, P., 2008, “Improving Performance with SQL Server 2008 Indexed

Views”, diakses pada 27 Agustus 2012,

http://technet.microsoft.com/en-us/library/dd171921(v=SQL.100).aspx.

[7] Karde, P., Thakare, V.M., November 2010, “Selection of Materialized View Using Query Optimization in Database Management : An Efficient Methodology”, Internasional Journal of Database Management Systems,Vol.2, No.4, 116-130.

[8] Larson, P.A., Yang, H.Z., 1985 “Computing Queries from Derived Relations”, Proceesing VLDB, Vol.11, 259-269. [9] Petkovic, Dusan., 2008, “Microsoft SQL Server 2008 : A

Beginner’s Guide”, McGraw-Hill, USA.

[10]Silberschatz, A., Henry, F. K., Sudarshan, S., 2011,” Database System Concepts”, McGraw-Hill, NY.

[11]Zeis, C., Ruel, C., & Wessler, M., 2009, “Oracle 11g For Dummies”, Wiley Publishing Inc, Indianapolis, Ind.

Kristina, mahasiswi Program Studi Sistem Informasi Fakultas

Gambar

Tabel 1 Pengaturan SET Option
Tabel 2 Waktu Respon Query pada Komputer 1

Referensi

Dokumen terkait

Untuk mendapatkan kesimpulan dari hasil pengujian pada Tabel 5.2 maka dicari rerata waktu akses dari masing-masing query , sehingga dapat dilihat query mana yang

Dari tiga query pengujian yang telah dilakukan diatas maka dapat disimpulkan bahwa PostgreSql membutuhkan waktu yang lebih cepat dibandingkan Mysql dalam

Pengujian dilakukan pada query yang menggunakan 2 tabel dengan indeks pada tahapan akses tabel secara penuh menghasilkan data yang menunjukan bahwa model Scalar memiliki

Diperlukan pengujian klasifikasi dengan menggunakan algoritme klasifikasi selain Fuzzy K-Nearest Neighbour atau Naïve Bayes untuk mengetahui apakah algoritme

Dari tiga query pengujian yang telah dilakukan diatas maka dapat disimpulkan bahwa PostgreSql membutuhkan waktu yang lebih cepat dibandingkan Mysql dalam

Pengujian dilakukan pada query yang menggunakan 2 tabel dengan indeks pada tahapan akses tabel secara penuh menghasilkan data yang menunjukan bahwa model Scalar memiliki

Dengan demikian maka perlu dibuatnya aplikasi perbandingan antara Algoritma TF-IDF dengan SQL query untuk mengetahui efisiensi waktu proses dan keefektifan

Pengeksekusian Query 2.2 Rancangan Pengujian Pengujian kinerja database MariaDB dan MySQL dengan melakukan query DML Insert, Update, Select Operator Penghubung AND dan OR Stored