System architecture
Table space design
Database design
Resource utilization
Data organization
Aplication design
Lock management
Explicit hierarchical locking for DB2 for scale environment
Query optimization
Perbedaan tipe dari benchmark test adalah digunakan untuk merangkup jenis
spesifik dari informasi. Sebagai contoh:
Sebuah infrastruktur benchmark menentukan kemapuan throughput dari
database manager pada kondisi terbatas laboratory yang pasti.
Sebuah application benchmark menentukan kemapuan throughput dari
database manager pada kondisi yang lebih lekat menggambarkan production
environment.
Benchmark test execution
Step 1
Keluar DB2 registry, database dan database manager configuration parameters,
dan bufferpools pada standart recommended values, yang dapat dimasukkan:
Values yang diketahui untuk diperlukan pada proper dan error-free aplication
Values yang dibutuhkan meningkatkan performence selama prior tuning.
Values yang disugestikan oleh AUTOCONFIGURE command
Default values; meskipun, ini mungkin tidak diperbolehkan :
o Untuk parameters yang significant untuk workload dan untuk objectives
dari test
o Untuk log sizes, yang harus ditentukan selama unit dan sistem testing.
o Untuk paramater apapun yang harus diganti untuk dapat menjalankan
aplikasi
Jalankan set dari iterations pada initial case ini dan hitung rata-rata eapsed time,
throughput, atau processor time. Hasilnya harus konsisten dan mungkin, idealnya
berbeda oleh tidak lebih dari beberapa persentase poin dari run to run. Mengukur
performence yang lebih signifikan dari run to run dapat dilakukan tuning sangat sulit.
Step 2
Select one and only one method or tuning parameter to be tested, and change its
value. Pilih satu dan hanya satu method atau tuning parameter untuk ditest, dan
mengganti value tersebut
Step 3
Jalankan himpunan iterasi lain dan hitung rata-rata elapsed time atau processor
time.
Step 4
Berdasarkan pada hasil dari benchmark test, lakukan salah satu berikut:
Jika performences meningkat ganti nilai dari parameter yang sama dan
kembali ke step 3. Pertahankan penggantian parameter ini sampai maximum
benefit muncul.
Jika performence menurun atau tetap, menghasilkan parameter sebelumnya,
kembali step 2, dan pilih parameter baru. Ulangi prosedur ini sampai semua
parameter telah ditest.
Contoh benchmark analysis testing
Ada ratusan metric yang dapat dipilih, tapi mengumpulkan semuanya dapat
mengakibatkan counter-productive pada sheer volume dari data yang diproduksi.
Metric yang anda inginkan ialah:
Easy to collect - Kamu tidak ingin untuk menggunakan complex atau
expensive tool setiap hari untuk monitoring, dan kamu tidak melakukan
monitoring untuk secara signifikan membebani system.
Easy to understand - Kamu tidak ingin melihat pengertian dari metric setiap
kali dilihat.
Relevant to your system - Tidak semua metric menghasilkan informasi yang
berarti pada semua environment.
11 metric awal :
Hal ini menghasilkan base level measurement dari system activity yang
unggul.
2. Buffer pool hit ratios, diukur terpisah pada data, index, XML storage object,
dan temporary data:
o Data pages: ((pool_data_lbp_pages_found pool_async_data_lbp_pages_found - pool_temp_data_l_reads) /
pool_data_l_reads) 100
o Index pages: ((pool_index_lbp_pages_found pool_async_index_lbp_pages_found - pool_temp_index_l_reads) /
pool_index_l_reads) 100
o XML storage object (XDA) pages: ((pool_xda_lbp_pages_found pool_async_xda_lbp_pages_found - pool_temp_xda_l_reads) /
pool_xda_l_reads) * 100
o Temporary data pages: ((pool_temp_data_l_reads pool_temp_data_p_reads) / pool_temp_data_l_reads) 100
o Temporary index pages: ((pool_temp_index_l_reads pool_temp_index_p_reads) / pool_temp_index_l_reads) 100
3. Buffer pool physical reads dan writes per transaction:
(POOL_DATA_P_READS + POOL_INDEX_P_READS + POOL_XDA_P_READS
POOL_TEMP_DATA_P_READS + POOL_TEMP_INDEX_P_READS)
/ TOTAL_APP_COMMITS
(POOL_DATA_WRITES + POOL_INDEX_WRITES + POOL_XDA_WRITES)
/ TOTAL_APP_COMMITS
Metric ini mirip dengan bufferpool hit ratios, tapi sedikit berbeda pada
tujuannya. Meskipun kamu dapat menentukan target value dari hit ratio, tidak
ada target yang mungkin dari read dan write per transaction.
4. Ration dari database rows yang dibaca ke rows yang dipilih:
ROWS_READ / ROWS_RETURNED
Perhitungan ini memberikan indikasi dari rata-rata jumlah dari baris yang
dibaca dari tabel-tabel database untuk menemukan baris yang memenuhi
syarat. Jumlah yang sedikit adalah indikasi dari efisiennya pengalokasian
data, dan secara umum menunjukkan index-index yang telah digunakan
secara effisien.
5. Jumlah dari waktu yang dihabiskan untuk mengurutkan per transaksi:
TOTAL_SORT_TIME / TOTAL_APP_COMMITS
Hal ini jalan yang effisien untuk menangani sort statistics, karena banyak
extra time pada sorting yang ditumpahkan secara automatic.
6. Jumlah dari lock wait time diakumulasikan per seribu transactions:
1000 * LOCK_WAIT_TIME / TOTAL_APP_COMMITS
Excessive lock wait time sering diterjemahkan dalam respone time yng buruk,
jadi penting untuk dimonitor. Hasil dinormalisasikan ke satu ribu transaksi
karena lock wait time pada satu transaksi secara khas sedikit rendah. Secara
teori satu ribu transaction dapat mengukur lebih mudah untuk ditangani.
Dirty steal adalah jalan terakhir yang dipilih untuk membersihkan trigger buffer
pool. Secara essensial, proses dari SQL satement yang diperlukan sebuah
bufferpool page baru diinterupt selama mengupdate pada victim page yang
ditulis ke disk. Jika dirty steal diperbolehkan sering terjadi, hal ini secara
signifikan dapat memengaruhi throughput dan respone time.
9. Jumlah dari package cache sisipan per seribu transactions:
1000 * PKG_CACHE_INSERTS / TOTAL_APP_COMMITS
Package cache sisipan merupakan bagian yang normal dari eksekusi pada
system; meskipun dalam jumlah besar, mereka secara signifikan dapat
menghabiskan CPU time.
10. Waktu dari sebuah agent menunggu untuk log records diperbarui pada disk:
LOG_WRITE_TIME
/ TOTAL_APP_COMMITS
Hal ini memberikan kecepatan aliran data antara beda partisi dalam cluster,
dan secara khusus, aliran diseimbangkan. Perbedaan signifikan dalam jumlah
buffer yang diterima dari partisi berbeda mungkin mengindikasikan sebuah
ketidakbenaran dalam jumlah data yang dihash pada setiap partisi.