View
7
Download
0
Category
Preview:
Citation preview
Timothy Orvin Edwardo – LE01 – 1901456205
Ringkasan UTS Database Administration
1. Fokus area dari SQL Server :
Mission – critical performance memory oriented.
Berkaitan dengan OLTP (mencatat semua transaksi yang
ada), fitur index, SSD, AlwaysOn enrichment.
In memory built in lebih cepat.
Secure dan scalable lebih aman untuk enterprise
dengan Windows Server.
High avaibility contoh : adanya fitur AlwaysOn.
Mission – critical support live support untuk mission
– critical solution.
Faster insight dengan adanya BI tools, PowerMap,
PowerPivot. BI dirancang untuk decision support system
sehingga bisa mengambil keputusan.
Platform hybrid cloud menyediakan opsi : virtualized atau
pure – on premise atau all in cloud.
2. In memories technology OLTP, Data warehouse dan analisis,
Streaming data.
3. Arsitektur SQL Server :
Database files dan transaction log
Database file bisa mengandung multiple filegroups.
Setiap filegroups harus mengandung 1 atau lebih
physical files.
Transaction log memastikan seluruh commited
transactions pada database bisa di recover baik melalui
rollback maupun point – in – time recovery.
Timothy Orvin Edwardo – LE01 – 1901456205
SQL Server native client data access method yang ada
pada SQL Server 2005 dan diperluas pada SQL Server 2012.
Melibatkan beberapa hal : database mirroring, FILESTREAM
Support, AlwaysOn readable secondary routing, Multiple
Active Result Set (MARS), snapshot isolation, query
notification, User Defined datatype (UDT).
Standard system database
Resource database mengandung read only critical
system tables, metadata, dan stored procedure yang
SQL Server jalankan.
Master database mengandung metadata tentang
database kita, termasuk konfigurasi, file location, login,
informasi konfigurasi tentang instance.
Tempdb database menampung temporary object
yang dibuat oleh user. Temporary object ini
dibutuhkan oleh database engine dan row – version
information.
Model database database sistem yang menyediakan
template ketika SQL Server membuat database baru.
Msdb database database sistem yang mengandung
informasi yang digunakan SQL Server agent, log
shipping, SSIS, backup-and-restore system untuk
relational database engine.
Synonym seperti alias. Digunakan untuk mempermudah
pemanggilan tabel agar tidak terlalu panjang.
Schema melakukan pengelompokkan terhadap database
object. Misal tabel. Nama tabel harus unik (tidak boleh
sama) dalam 1 schema.
Database management object informasi tentang SQL
Server instance dan sistem operasi.
Timothy Orvin Edwardo – LE01 – 1901456205
Dynamic Management View
Dynamic Management Function
SQL Server data types
Character CHAR, VARCHAR, NVARCHAR
Exact numeric BIT, TINYINT, BIGINT, INT, NUMERIC,
DECIMAL, MONEY, SMALLMONEY
Approximate numeric FLOAT, REAL
Binary BINARY, VARBINARY
Date dan time DATE, DATETIME, DATETIMEOFFSET,
TIME, SMALLDATETIME
4. Stored procedure sekumpulan pernyataan T – SQL yang
dikompilasi menjadi rencana eksekusi tunggal. Prosedur yang
disimpan sangat membantu dalam mencapai implementasi
konsisten dari logika di aplikasi. Manfaatnya :
Memungkinkan pemrograman modular.
Eksekusi lebih cepat.
Mengurangi network traffic.
Dapat digunakan sebagai mekanisme keamanan.
5. Tools administrasi dan konfigurasi :
SQL Server Configuration Manager konfigurasi SQL Server
agar pas dengan environment kita.
Startup parameter hal ini juga bisa di setting di SQL
Server Configuration Manager atau lewat CMD.
Startup Stored Procedure
Sp_configure mengizinkan adanya dan scan startup
stored procedure.
Untuk commit setting, SQL Server instance harus di
restart.
Timothy Orvin Edwardo – LE01 – 1901456205
Sp_procoption membuat stored procedure untuk
membuatnya sebagai startup stored procedure.
Partially contained database
Konsep dimana setting dan metadata database tidak
ada dependensi konfigurasi di instance SQL Server
dimana database resides.
User bisa connect tanpa otentikasi di instance level.
Di SQL Server 2014, fully contained database tidak ada.
Hanya ada partial contained database.
6. Troubleshooting tools :
Dedicated Administration Connection
Diagnosis koneksi yang bisa digunakan sebagai koneksi
standar ketika server tidak memungkinkan.
Koneksi di assign ke port, dimana koneksi ini hanya
bisa dibuat oleh sysadmin role dari SSMS atau sqlcmd
tool.
Rebuilding system database
Membuat ulang sistem database kita.
Menggunakan setup.exe dan /QUIET dan /ACTION
untuk rebuild database.
7. SQL Server Management Studio :
Reports
Server reports melaporkan hal – hal yang berkaitan
dengan server, seperti server startup time, instance
name, active session.
Database reports beroperasi di server – level
reports. Contoh : disk usage, total space yang
digunakan, data file space, transaction log space.
Timothy Orvin Edwardo – LE01 – 1901456205
Object explorer details melaporkan tentang yang
berkaitan dengan database diagram, tabel, view,
sinonim.
Konfigurasi SQL Server
Bisa menggunakan server properties screen general,
memory, processor, security, connection.
Menggunakan sp_configure max degree of
parallelism, CLR enabled, block process threshold.
Filter object bisa filter object berdasarkan nama, schema,
ataupun kapan object dibuat. Menggunakan filter icon di
object explorer.
Error log bisa melihat log ketika kita menggunakan SSMS.
Untuk melihatnya, kita menggunakan SQL Server logs pada
object explorer.
Monitor aktivitas memberikan view tentang koneksi kita
pada instance. Tool ini merupakan cara kompeherensif
untuk melihat siapa yang connect ke mesin kita dan apa
yang mereka lakukan.
8. Proses monitoring :
Sp_who dan sp_who2 informasi tentang siapa saja yang
connect ke instance dan melihat semua koneksi pada server.
Sys.dm_exec_connection informasi untuk troubleshoot
database engine.
Sys.dm_exec_sql_text retrieve text dari query tertentu.
Bisa digabungkan dengan DMV untuk melihat query yang
performanya buruk.
9. Central management servers dan server group :
Timothy Orvin Edwardo – LE01 – 1901456205
Mengizinkan policy based management ke group server
pada waktu yang sama.
Bisa eksekusi query pada group server dan aggregate atau
tetap membiarkan terpisah.
Jika ada error, bisa query ke single statement.
Sebelumnya harus registrasi central management server
terlebih dahulu.
Membuat server group dan registrasi ke group dibawah
registration server.
Beberapa hal :
Tidak bisa registered group dibawah dirinya sendiri.
Semua query dieksekusi melalui trusted connection.
Jika cross domain, harus memiliki trusted relationship.
Bisa konfigurasi multiple central management server.
10. Security data terdiri dari 2 model yakni authentication dan
authorization :
Authentication adalah sebuah proses untuk memastikan
atau memverifikasi bahwa pelaku adalah benar – benar
pelaku.
Proses ini memastikan kalau ada pelaku yang
mengaku sebagai orang lain, bisa terdeteksi sebagai
orang lain.
Proses membuktikan identitas.
Bila authentication berhasil, akan terjadi hubungan
terpercaya antara pemberi layanan dan pengguna
layanan.
Pada SQL Server, ada 2 jenis authentication :
Timothy Orvin Edwardo – LE01 – 1901456205
o SQL Server Authentication login dibuat di
SQL Server, bukan berdasarkan windows user
account.
o Windows Authentication SQL Server
validasi nama akun dan password
menggunakan prinsip windows token di sistem
operasi.
Authorization adalah proses yang menetukan data mana
yang kita bisa akses, layanan apa yang bisa diakses,
wewenang apa saja yang bisa kita lakukan terhadap data.
Dilakukan ketika user dinyatakan berhak untuk
mengakses.
Contoh authorization di SQL Server :
o GRANT memberi akses / wewenang kepada
seseorang.
o DENY membatasi akses / wewenang kepada
seseorang.
o REVOKE menghapus GRANT atau DENY.
Wewenang pada SQL Server bisa diberikan pada
server level atau database level. Bisa juga ke object
yang spesifik.
Permissions / izin bisa dikaitkan bersama dengan
menyederhanakan izin ke database dengan
permission chains. Bisa juga lintas database (ke
database lain) menggunakan cross – database
chaining.
11. 4 contoh previleges untuk login dalam SQL Server :
Timothy Orvin Edwardo – LE01 – 1901456205
Alter mengizinkan login yang diberikan, untuk
membuat perubahan pada login kedua dimana ada hak
diberikan. Contoh : ada 2 login, login1 dan login2. Login1
bisa alter login2 dengan adanya permission ini. Alter login
bisa : mengubah password, default database, default
language.
Control memberikan wewenang pada granted user
untuk mengizinkan login (mengontrol login). Sebagai
contoh : login1 dan login2. Login1 bisa mengontrol login2
dengan control permission.
Impersonate megizinkan granted user untuk
menggunakan EXECUTE AS sebagai syntax,
menspesifikasikan login yang diberikan untuk
mengeksekusi code sebagai grantee login.
View Definition mengizinkan granted user untuk
melihat konfigurasi pemberi wewenang login (granter
login).
12. SQL injection adalah sebuah aksi hacking yang dilakukan di
aplikasi client dengan memodifikasi perintah SQL yang ada di
memori aplikasi client. Ini juga merupakan teknik mengeksploitasi
aplikasi web yang didalamnya menggunakan database sebagai
penyimpanan data. Hal ini disebabkan oleh :
Tidak ada penanganan terhadap karakter petik satu dan
double minus yang menyebabkan aplikasi bisa disisipkan
perintah SQL.
Hacker menyisipkan perintah SQL kedalam parameter
atau form.
Timothy Orvin Edwardo – LE01 – 1901456205
13. SQL injection dapat dikatakan sesuatu yang berbahaya
karena :
Orang bisa login tanpa harus punya akun.
Orang bisa merubah / menghapus / menambahkan data –
data yang ada di database.
Orang bisa mematikan database, sehingga layanan
(termasuk layanan ke web server) berhenti.
14. Hal yang perlu diperhatikan database administrator tentang
performa :
Performance tuning cycle
Mendefinisikan good performance
Konfigurasi power mendeskripsikan bagaimana
sistem operasi bertindak terkait power consumption.
Timothy Orvin Edwardo – LE01 – 1901456205
o Balanced balance dan demand diseimbangkan
agar efisien.
o High Performance meningkatkan kinerja CPU
dan hardware server.
o Power Saver membatasi beberapa hal
sehingga hemat energi dan menguangi cost
operasi.
Kalau ada tidak memenuhi salah satu, maka bisa
menyebabkan minimal performance impact (jika tidak
melakukan high performance) atau core parking (jika
tidak balancing).
Core parking kondisi dimana ada core yang tidak
bekerja, jadi 1 core kerjanya berat.
Melibatkan planning, sizing, testing.
Fokus pada hal yang penting
Mencapai performance sesuai permintaan user.
Kita harus tau apa yang akan diukur, bagaimana
mengukurnya, dan keterbatasannya.
Mempertimbangkan typical system jumlah semua
performa dari client machine ke banyak layer di
database server dan balik lagi.
15. Hal yang harus diperhatikan developer DBA terkait performa
Users
Berapa banyak user dan bagaimana concurrencynya.
Peak usage level.
Apa yang akan mereka lakukan.
SQL Statement memahami apa yang akan mereka
lakukan, SQL statement mana yang akan dijalankan, dan
seberapa sering dijalankan untuk user action.
Timothy Orvin Edwardo – LE01 – 1901456205
Data usage pattern memahami total data volume di
setiap tabel termasuk bagaimana data masuk dan
mengalami perubahan.
Database schema
Memahami hot spots di data untuk enable physical
design agar bisa diimplementasi secara efisien.
Pada desain logical data model, biasanya tidak
memikirkan performa optimum melalui database
design.
Ketika siap membuat physical model, kita harus bisa
modifikasi design untuk incorporate knowledge pada
data access pattern.
16. Hal yang harus diperhatikan production DBA berkaitan
dengan hardware. Toolsnya :
Task manager view tentang server performance dan
penggunaan resources.
System performance monitor view detail tentang
windows server performance dan per instance SQL Server
specific counter.
SQL Management Data Warehouse mengumpulkan dan
store performance dan data collector outputs ketika DBA
butuh troubleshoot system issues.
SSMS mengizinkan long running transaction untuk
dianalisis dan bottleneck agar ditemukan dan diselesaikan.
Dynamic Management View mengandung server state
information yang digunakan untuk diagnosa masalah dan
monitor health of SQL Server.
Extended event mengumpulkan data tentang performa
SQL Server. Bisa dilihat melalui UI pada SQL Server 2012.
Timothy Orvin Edwardo – LE01 – 1901456205
17. Hyper threading teknologi yang memungkinkan
menduplikasi section tertentu dari physical processor core untuk
meningkatkan parallelization pada komputasi.
18. Multicore :
Socket dimana prosesor plugged. Ada relasi 1 – 1 antara
socket dan unit eksekusi.
Core unit eksekusi. Jika multiprosesor, maka akan ada 2
atau lebih per socket.
Thread tidak sama dengan OS thread atau thread pada
program.
19. NUMA :
Non Uniform Memory Access.
Memiliki 2 socket per node configuration dan implement
multiple nodes sampai maximum sistem.
Perbedaan dengan SMP system adalah dimana memori
dihubungkan dan bagaimana prosesor diatur dalam sistem
bus.
20. Memori :
Physical memory RAM yang diinstall ke server.
Physical address space kumpulan address yang digunakan
prosesor untuk akses apa saja pada bus. Beberapa bagian
space ini direserve untuk mapping hardware buffer dan
interface specific memory area seperti video RAM.
Virtual memory manager bagian OS yang manage
physical memory dan share antar proses yang memori
butuhkan.
Timothy Orvin Edwardo – LE01 – 1901456205
Manage virtual memory untuk setiap proses dan ketika
perlu, mengembalikan physical memory dibalik virtual
memory dan dimasukkan ke page file agar tidak hilang.
Page file disk file yang digunakan komputer untuk
meningkatkan jumlah physical storage untuk virtual
memory.
Page faults secara umum bermasalah untuk SQL
server. Beberapa tidak bisa dihindari, dan memiliki
impact terbatas pada performa.
21. I/O :
Memiliki impact terbesar pada performa dalam SQL Server.
Pada SQL Server, fokus ke disk I/O karena disanalah data
resides. Kita juga perlu mengetahui efek dari poor network
I/O yang menyebabkan bottleneck ke performance.
Beberapa contohnya :
Network
o Merupakan key component pada SQL Server.
o Network yang link ke SQL Server, menerima
request untuk melakukan sesuatu dan mengirim
result kembali ke client.
Magnetic disk
o Advanced Technology Attachment (ATA)
dikenal juga sebagai Integrated Drive Electronic
yang tidak hanya refer ke konektor dan definisi
interface, tetapi juga ke fact yang drive
controller terintegrasi ke drive.
o Small Computer System Interface (SCSI)
kumpulan standar yang didevelop untuk connect
Timothy Orvin Edwardo – LE01 – 1901456205
dan transfer data antar komputer dan peripheral
devices termasuk disk.
o More disks
o Faster disks
o Cahche – read and write
o Disk cache
Read ahead / read behind ketika read
dikirim ke disk, disk mungkin membaca
data yang tidak direquest.
Write acceleration disk controller
memberi signal pada SQL server bahwa
operasi write berhasil dilakukan secepatnya
setelah menerima data bahkan sebelum di
write ke disk.
Input / output speed balancing rate read
dan write operation yang terkirim ke disk
mungkin fluktuatif.
Solid state / flash drive
o SSD tidak berputar sehingga tidak ada rotational
latency. Bisa secara langsung read dan write.
o Flash memory ada 2 jenis NAND dan NOR. NOR
beroperasi seperti RAM dan memerlukan power
untuk store data. NAND sifatnya non – volatile
dan tidak butuh listrik untuk maintain data yang
di store.
o Target disk latency :
Database transaction log kurang dari 5
ms. Biasanya 0 ms.
OLTP data kurang dari 10 ms.
Timothy Orvin Edwardo – LE01 – 1901456205
Decision Support System (OLAP dan
reporting) Kurang dari 25 ms.
22. RAID teknologi penyimpanan data untuk toleransi
kesalahan pada media penyimpanan komputer, terutama
harddisk dengan redundansi data. Berpengaruh terhadap
banyaknya disk yang dibutuhkan untuk membuat storage system
dan dengan karakteristik I/O yang dibutuhkan.
Mempertimbangkan : availability, cost, space, performance. Jenis
RAID antara lain :
RAID 0 stripping tanpa parity dan mirroring.
RAID 1 mirroring tanpa stripping atau parity (2 disks).
RAID 10 stripping dengan mirroring (minimum 4 disks,
dan RAID ini merupakan rekomendasi).
RAID 5 stripping dengan parity (minimum 3 disks, dan
RAID ini disarankan untuk alternatif).
RAID 6 stripping dengan double parity (minimum 4 disks).
23. Optimisasi aplikasi bertujuan untuk :
Meminimalkan waktu respon untuk setiap SQL statement
dan meningkatkan system throughput.
Memaksimalkan scalability untuk keseluruhan database
server dengan mengurangi network traffic latency.
Mengoptimisasi disk I/O throughput dan CPU processing
time.
24. Cara optimisasi aplikasi :
Mendefinisikan workload test environment harus di
setup yang cocok dengan sistem produksi dan menggunakan
load generator.
Timothy Orvin Edwardo – LE01 – 1901456205
SQL Server I/O process model
o Windows server I/O manager mengatur
keseluruhan I/O dengan metode asinkronus.
o SQL Server storage engine manage ketika disk
I/O operations dijalankan, bagaimana
dijalankannya, banyaknya operasi yang
dijalankan.
o Tugas database engine adalah mitigasi cost I/O
operations sebisa mungkin.
o In – memory OLTP merepresentasikan major
advance SQL Server untuk optimisasi server,
termasuk bagaimana code dijalankan dan
berkaitan dengan I/O.
Peletakan file database
SQL server store database di operating system file
seperti physical disk atau logical unit number.
Penempatan adalah hal kritis terhadap I/O
performance dan DBMS.
Menggunakan dedicated I/O subsystem yang cepat
untuk database file memungkinkan untuk jalan
dengan lebih efisien.
Untuk memaksimalkan performa, pastikan individual
data dan log file berada terpisah dengan physical LUN.
Bisa mereferensikan data yang jarang diupdate ke
read – only file group.
Pertimbangan tempdb
Memiliki impact yang besar karena merupakan
database yang paling dinamis dan haruslah yang
tercepat.
Timothy Orvin Edwardo – LE01 – 1901456205
Digunakan untuk store user object dan internal object
yang punya 2 version store.
Version store kumpulan data pages yang hold data
rows untuk support fitur tertentu yang menggunakan
row versioning. Ada 2 jenis
o Yang digenerate data modification transaction
menggunakan snapshot atau read commited row
versioning isolated level.
o Yang menggunakan fitur seperti online index
operation, MARS, dan AFTER triggers.
Tempdb menambah support untuk fitur large set yang
membuat user, internal object atau version store.
Menempatkan tempdb di I/O subsystems yang
berdedikasi dan cepat bisa memastikan perfroma yang
baik.
Lakukan :
o Pertimbangan ukuran tempdb.
o Memonitor tempdb untuk mengetahui yang
mana yang affect terbanyak.
o Rebuild index pada tabel terbesar ketika monitor
tempdb.
25. 3 alokasi penting ketika berkaitan dengan database dan
tempdb :
Page free space track halaman yang telah dialokasi dan
status halaman.
Global allocation map track dedicated extent dengan 1 bit
per extent.
Shared GAM track mixed extent dengan 1 bit per extent.
Timothy Orvin Edwardo – LE01 – 1901456205
Index allocation map track semua pages yang dialokasi
untuk 1 object tertentu.
26. 2 proses berdasarkan algoritma yang digunakan untuk
alokasi space SQL Server data files :
Proportional fill bagaimana data ditulis ke setiap file
dalam multi-file filegroup berdasarkan proporsi free space
setiap file.
Round Robin pola dimana filegroup baru dipilih dalam
multi-file filegroup ketika file memenuhi proportional fill
limit sebelum growth operation dibutuhkan.
27. Partisi break up object besar (contoh : tabel) ke bagian –
bagian kecil yang lebih mudah di manage. Row merupakan unit
dimana partisi berdasar. Hal ini dilakukan agar pencarian data
lebih cepat dilakukan, karena data terbagi – bagi. Prosesnya :
Membuat fungsi partisi untuk mendefinisikan strategi
penempatan data.
Membuat filegroups untuk mendukung fungsi partisi.
Membuat skema partisi untuk mendefinisikan strategi
distribusi physical data.
Membuat tabel / index di fungsi partisi.
Menguji query plan untuk melihat partisi yang diakses
sebagai verifikasi yang hanya sebagian (subset) data yang
direturn.
28. Beberapa proses yang berefek pada partisi :
Database backup dan strategi restore.
Strategi maintenance index.
Strategi management data.
Timothy Orvin Edwardo – LE01 – 1901456205
End – user database workload.
Concurrency parallel partition query processing dan table
partition lockand.
Distribusi yang diperluas atau isolated database workloads
menggunakan filegroups.
29. Data compression bisa dilakukan pada database object
berikut :
Tabel (kecuali tabel sistem).
Clustered index
Non – clustered index
Index view
Tabel yang telah dipartisi dan index dimana setiap partisi
bisa saja memiliki setting compression yang berbeda.
30. Yang diperhatikan pada data compression :
Row compression berefek pada data di row level dan
mengubah sepenunya internal structure.
Page compression row compression ditambah dengan :
Prefix compression untuk setiap page dan kolom,
nilai prefix ditentukan oleh yang bisa digunakan untuk
mengurangi storage requirement. Nilai diubah oleh
reference ke prefix yang di store ke CI.
Timothy Orvin Edwardo – LE01 – 1901456205
Dictionary compression melibatkan pencarian value
yang berulang dimana saja dalam page yang kemudian
diubah oleh reference ke CI.
Operasi partisi tabel :
o Splitting partition kedua partisi inherit setting
original partition.
o Merging partition resultan partisi inherit
compression setting di destinasi partisi.
o Switching partition compression setting pada
partisi dan tabel yang akan di switch harus
match.
o Dropping partition tabel tetap di compression
setting.
Estimating Space Savings memprioritaskan pengizinan
data compression dimana kita bisa evaluasi perkiraan
compression cost saving.
Memonitor data compression access method object yang
ditemukan di windows performance monitor :
Page compression attemps/sec menghitung banyak
page compression attemps per detik.
Page compressed/sec menghitung banyak page
yang telah dikompres per detik.
Pertimbangan data compression :
Enable / disable clustered index compression bisa
rebuild semua non clustered index.
Data compression tidak dapat dilakukan pada sparse
column.
LOB yang out – of – row tidak di kompres.
Nonleaf pages dalam index dikompres hanya melalui
row compression.
Timothy Orvin Edwardo – LE01 – 1901456205
Nonclustered index tidak inherit compression setting
pada tabel.
Ketika drop clustered index, tabel tetap pada
compression setting.
Membuat clustered index inherit compression setting
pada tabel.
31. Ada 2 tipe scheduler di SQL Server :
Hidden digunakan oleh internal SQL Server process.
Visible digunakan untuk user queries dan user process.
Windows menggunakan preemptive scheduling, sedangkan
SQLOS menggunakan non – preemptive scheduling.
32. Hot add CPU :
33. Cache coherency :
Cache coherency hanya 1 prosesor yang bisa update data
pada sekali waktu. Semua prosesor yang telah copy di cache
mereka bisa memiliki sebuah local copy yang invalidated dan
harus di reload.
Untuk mengatur konfigurasi prosesor pada SQL Server
proses bisa menggunakan affinity mask.
Context switch ketika windows kernel transfer control
prosesor dari proses yang dieksekusi ke yang lain yang ready
ke run.
Timothy Orvin Edwardo – LE01 – 1901456205
Housekeeping maintenance keeping contect atau
kumpulan prosesor meregister nilai dan data lain yang
mendeskripsikan proses rate.
Previleged mode mode proses untuk komponen OS dan
hardware – manipulating drivers. Mengizinkan direct access
ke hardware dan semua memori.
Fiber unit yang bisa dieksekusi yang lebih ringan dari
thread dan beroperasi dalam konteks user mode.
34. Parallelism :
Maximal degree of parallelism (MAXDOP) biasanya di set
sebanyak jumlah cores di 1 NUME node. Defaultnya adalah 0
(mengizinkan mempertimbangkan semua prosesor ketika
membuat plan eksekusi).
Cost threshold for parallelism hal ini bergantung pada
optimisasi SQL Server, agar lebih murah SQL Server
optimizer bisa generate parallel plan untuk compare yang
termurah.
35. Pertimbangan dan perluasan memori :
Buffer pool extension main memory akan extends ke L1
buffer pool, dan BPE akan extends ke L2 buffer pool.
Tuning SQL Server memory menggunakan konsep
memory node, dimana 1 hirarki antara memori dan CPU.
Ada memory node untuk setiap set CPU ke memori lokal dan
kontennya ke CPU.
Data locality konsep memiliki semua data ke prosesor
dalam local NUMA node ketika processing request.
Near memory method yang disarankan, karena
diakses oleh prosesor pada NUMA node yang sama.
Timothy Orvin Edwardo – LE01 – 1901456205
Far memory request harus meninggalkan NUMA
node dan traverse sistem interconnect crossbar untuk
mendapat NUMA node yang memiliki informasi yang
dibutuhkan didalam memorinya.
Max server memory SQL Server menggunakan semua
memori yang tersedia jika unchecked. Setting ini
direkomendasikan.
36. Resource governor :
Resource pool resource fisik SQL Server. Pada saat
instalasi ada 2 : internal dan default.
Workload groups container untuk sesi yang sama terkait
aturan klasifikasi dan apply policy ke setiap sesi dalam grup.
Bisa dibuat user defined dengan menggunakan CREATE
WORKLOAD GROUP atau mengubah settingan yang sudah
ada pakai ALTER WORKLOAD GROUP. Yang bisa diatur
antara lain : maximum memory allocation / request,
maximum cpu time / request, minimum / maximum IOPS
per request per second.
Classification hanya 1 fungsi klasifikasi user defined yang
bisa dirancang sebagai classifier. Bisa digunakan sebagai
default workload groups.
Memonitor resource governor bisa menggunakan SQL
Server resource pool (untuk resource – specific statistic)
atau SQL Server workload pool (untuk workload – specific
statistic).
Menggunakan resource governor pada SSMS ada di
object explorer, di bagian management node.
37. Basic monitoring tools :
Timothy Orvin Edwardo – LE01 – 1901456205
Performance monitor track resource yang digunakan
Microsoft OS.
Extended events arsitektur yang bisa dikonfigurasi untuk
collect informasi ke isu troubleshoot dengan SQL Server.
SQL Server profiler aplikasi grafikal yang bisa capture
trace event yang terjadi di SQL server. Disini menambahkan
kapabilitas ke informasi trace dan menggunakan semua
event – capturing functionality pada SQL trace.
SQL trace T – SQL stored procedure untuk invoke SQL
Server trace tanpa memulai SQL profiler application. Disini
menspesifikasikan event dan store ke dalam file.
Default trace trace yang ringan yang menjalankan loop
berkelanjutan dan capture sebagian kecil key database dan
server event.
Activity monitor :
DMV dan DMF return informasi server state yang
bisa digunakan untuk monitor health dari server
instance, diagnosa masalah, tune performance.
System stored procedure informasi untuk SQL
Server monitoring.
Standard reports melihat apa yang terjadi pada SQL
Server tanpa menyelami DMV, Xevent, dan default
trace.
System center advisor analisis SQL Server dan
memberikan feedback pada konfigurasi dan operasi
melalui kumpulan best practices yang diterima untuk
konfigurasi dan operasi SQL Server.
38. Performance monitor :
CPU resources counter
Timothy Orvin Edwardo – LE01 – 1901456205
Object : Processor – Counter : % Processor – time
menghitung persentase prosesor sibuk.
Object : System – Counter : Processor queue length
ukuran berapa banyak thread di ready state pada saat
waiting.
Object : Processor – Counter : % Previleged – time
mengindikasi persentase sampel interval ketika
eksekusi di kernel mode.
Object : Process – Counter : % Processor time –
Instance:sqlservr menghitung persentase sampel
interval selama SQL Server menggunakan prosesor
yang tersedia.
Object: Process - Counter: % User Time - Instance:
sqlservr menghitung persentase sampel yang SQL
Server jalankan di user mode.
Disk activity
Throughput, IOPS berapa I/O per detik yang storage
subsystem bisa deliver.
Throughput, MBPS berapa MBPS yang I/O
subsystem bisa deliver.
Latency berapa lama waktu yang dibutuhkan I/O
request.
Queue depth berapa banyak I/O request yang
menunggu.
Memory usage hal yang paling kritis pada SQL Server
performance karena tanpa memori yang cukup, SQL Server
dipaksa untuk tetap membaca dan menulis data ke disk
untuk memenuhi query.
39. Fungsi DMV dan DMF :
Timothy Orvin Edwardo – LE01 – 1901456205
Melihat apa yang terjadi pada SQL Server contoh :
melihat running query, resource usage, yang mana yang
menunggu.
Melihat locking information
Melihat blocking information
Penggunaan indeks
Timothy Orvin Edwardo – LE01 – 1901456205
Indeks not used
Melihat query yang menunggu grant memori
Timothy Orvin Edwardo – LE01 – 1901456205
Connected user information
Filegroup free space
Query plan dan query text untuk query yang berjalan
Penggunaan memori
Timothy Orvin Edwardo – LE01 – 1901456205
Penggunaan memori buffer pool
40. Monitoring logs :
Aspek monitoring lainnya yang sering dilihat adalah log files
yang tersedia.
Biasanya, SQL Server dan Windows Event log dilihat melalui
aplikasi berbeda, yaitu Windows Event Viewer dan SQL logs
melalui text editor.
Memonitor SQL Server Error logs setiap event yang
kita lakukan termasuk error yang terjadi dapat kita
lihat di folder logs dimana MSSQSERVER berada.
Memonitor Windows Event Log mengandung
informasi event tambahan tentang server
environment, proses lain yang beroperasi, dan
informasi tambahan SQL Server proses yang tidak
terekam pada SQL Server Error Log. Ada 3 event log :
Timothy Orvin Edwardo – LE01 – 1901456205
o Application event log
o Security event log
o System event log
41. Alasan monitor event :
Menemukan worst performing query.
Audit user activities.
Identifikasi penyebab deadlock.
Stress testing.
Workload.
42. System Center Advisor :
Merupakan evolusi alami dari SQL Server Best Practice
Analyzer (BPA).
Merupakan hasil dari orang yang bekerja di SQL Server dan
SQL teams yang bekerja pada Product Support Service untuk
deliver tool yang efektif untuk validasi SQL Server
configuration.
Merupakan cloud based configuration monitoring tool yang
bisa monitor banyak server dan menyediakan analisis online
tentang hasilnya.
43. Query processing :
Timothy Orvin Edwardo – LE01 – 1901456205
44. Tahapan optimisasi query :
Generate execution plan
Mesin query optimizer generate query plan untuk T –
SQL statement.
Query optimizer berfungsi untuk analisis solusi
berbeda pada query dan menentukan option yang cost
nya lebih kecil.
Bisa melalui graphical / text – based query plan melalui
SSMS atau bisa di monitor melalui DMV dan DMF.
Statistic
Cardinality keunikkan data yang ditemukan di kolom
tertentu.
High cardinality kolom dengan value yang unik.
Low cardinality kolom dengan beberapa value yang
sama.
SQL 2014 Query Optimization Improvement area yang
terkena dampak :
Timothy Orvin Edwardo – LE01 – 1901456205
Key yang ditambahkan secara descending.
Asumsi predikat yang difilter di tabel yang sama yang
punya korelasi sama.
Asumsi predikat yang difilter di tabel berbeda adalah
independen.
45. Mengidentifikasi isu SQL Query Performance Tuning :
Memonitor performa query bisa memonitor standard
report melalui object explorer dari instance level, bisa
monitor disk usage, backup dan restore event, transactions.
Generate query plan showplan di query engine
mendeskripsikan setiap query. Setiap showplan memiliki
informasi berbeda.
Estimated bisa di generate saat sebelum query
dijalankan.
Actual memperlihatkan step yang dieksekusi dan
bagaimana query dijalankan.
Membaca query plan pada graphical query plan, operasi
logical dan physical di representasikan dengan ikon, dimana
tiap ikon mengidentifikasikan tipe operasi yang dieksekusi.
46. Clustered index indeks yang mengurutkan data pada
tabel dan dapat diumpamakan seperti indeks huruf dalam kamus.
Karena disimpan dalam bentuk satu urutan, maka 1 tabel hanya
bisa punya 1 clustered index.
Timothy Orvin Edwardo – LE01 – 1901456205
47. Non – clustered index indeks yang tidak mengurutkan
secara fisikal dan dapat diumpamakan seperti indeks pada buku.
Sebuah tabel bisa memiliki banyak non – clustered index. Non –
clustered index berisi pointer yang menunjukkan lokasi
sesungguhnya dari data yang dicari saat melakukan pencarian
data. Pencarian sedikit lebih lama dibanding clustered index.
48. Indeks berfungsi untuk mempercepat pencarian jika data
yang tersedia jumlahnya banyak.
49. Ada beberapa operator akses data pada query plans :
Table scan
Pada table scan, melibatkan scan yang berurutan atau
sekuensial pada keseluruhan data pages yang
merupakan milik table tersebut.
SCAN COUNT bisa menghitung berapa kali table
diakses untuk query ini. Hal ini ditampilkan sebagai
suatu statistic.
LOGICAL READS bisa menghitung berapa banyak
halaman yang dibaca dari data cache. Dikarenakan
menggunakan table scan, maka banyaknya logical
reads adalah sama dengan banyaknya halaman yang
dialokasikan untuk table ini.
Timothy Orvin Edwardo – LE01 – 1901456205
PHYSICAL READS mengindikasikan banyaknya
halaman dari disk juga memperlihatkan O
(kompleksitas) dari code sebelumnya. Namun dalam
hal ini bukan berarti tidak ada physical reads dari disk.
READ – AHEAD READS mengindikasikan banyaknya
halaman dari physical disk yang ditempatkan di
internal data cache ketika SQL Server memperkirakan
bahwa kita akan membutuhkannya untuk query
selanjutnya.
LOB bisa terdapat pada logical reads, physical reads,
maupun read – ahead reads. Ini digunakan khusus
apabila kita akan membaca large objects (contohnya :
VARCHAR(MAX), XML, VARBINARY(MAX). Dalam LOB
bisa menyebabkan SET STATISTIC IO melaporkan angka
yang lebih besar, karena operasi retrieval LOB mungkin
akan berulang.
Clustered Index Scan
Mengurutkan dan menyimpan data di table atau view
berdasarkan key values. Ada kolom yang termasuk
dalam definisi index. Hanya boleh ada 1 clustered
index per table karena data hanya bisa diurutkan
dalam 1 bentuk urutan.
Timothy Orvin Edwardo – LE01 – 1901456205
Banyaknya page reads sedikit lebih banyak
dibandingkan heap table karena ukuran row lebih
besar pada clustered index.
Scan tidak menggunakan pointer di row, tetapi hanya
membaca halaman yang tidak terurut.
Ordered clustered index scan penuh terhadap
clustered index, tetapi data direturn berurut oleh
clustering key.
Non Clustered Index Scan
Hal ini terjadi ketika nonclustered index bisa return
semua field tanpa membaca actual data pages.
Jika nonclustered index bisa digunakan untuk
memenuhi sebuah query, maka disebut dengan
covering index.
Covering index berjalan lebih cepat disbanding
clustered index scan karena ukuran tiap row lebih kecil
karena tidak mengandung semua field di table actual.
Contoh : COUNT (*) query.
Timothy Orvin Edwardo – LE01 – 1901456205
Non clustered index pada ORDERDATE. Index key
clustered dimasukkan pada setiap index row. Keyword
INCLUDE akan menginstruksikan index untuk
menyimpan REVISIONNUMBER dan DUEDATE.
Pada statistic IO bisa dilihat bahwa pada nonclustered
index, logical readsnya lebih kecil. Ini dikarenakan telah
mengcover query dan telah menyajikan data sejak di
leaf.
Connecting Access Operator
Ketika membaca query plan, salah satu visual cues
yang disediakan untuk troubleshoot masalah performa
adalah pipe yang menghubungkan data access
operator.
Ukuran pipe ditampilkan sebagai indicator banyaknya
row yang diproses antar steps.
Timothy Orvin Edwardo – LE01 – 1901456205
Porsi query plan memberikan easy view yang
mengindikasi dimana jumlah row yang banyak diproses
dengan jumlah row yang lebih kecil pada operasi
actual.
Jika ada perbedaan jumlah row yang diproses dan
estimasinya, maka mengindikasikan bahwa statistic
telah out of date.
50. JOIN Operator :
Nested loop atau loop join
Menggunakan satu join input sebagai outer input table
dan inner input table.
Outer loop konsumsi outer input table row per row.
Inner loop dieksekusi satu kali untuk setiap outer row,
mencari matching row dengan inner input tablenya.
Timothy Orvin Edwardo – LE01 – 1901456205
Row dibaca oleh table CUSTOMER, kemudian matching
row ditemukan di SALESORDERHEADER. Dikarenakan
hanya 2 customer records yang dibutuhkan, maka
SALESORDERHEADER hanya akan dibaca dua kali.
Nested loop lebih efektif jika outer input lebih kecil
dan inner inputnya terurut dan besar.
Pada performance tuning, kita harus validasi bahwa
tipe join yang benar yang paling efisien untuk return
rows. Selain itu juga verifikasi nested loop join memiliki
index yang valid untuk perform seek di inner query dan
tidak menjalankan table scan atau index scan.
Hash join
Memiliki 2 input : build input (outer table) dan probe
input (inner table).
Query optimizer assign role ini sehingga build input
lebih kecil.
Hash aggregate physical operator melakukan
penghapusan duplikat dan grouping seperti SUM,
Timothy Orvin Edwardo – LE01 – 1901456205
GROUP BY. Modifikasi ini hanya menggunakan satu
input untuk build dan probe roles.
Hash join yang pertama scan hash values untuk
keseluruhan build input, kemudian membuat hash
table. Setelah itu diikuti oleh probe phase, dimana
seluruh probe input discan satu baris 1x. Untuk setiap
probe rows, hash key dihitung dan yang
berkorespondensi discan kemudian yang cocok
dihasilkan. Ini disebut juga dengan in-memory hash
join. Secara default SQL Server menjalankan in
memory hash join.
Recursive hash join ketika hash table besar sehingga
harus dipartisi ke beberapa step dan beberapa level
pada setiap step. Namun, ini bisa mengurangi
performa server.
Merge join
Timothy Orvin Edwardo – LE01 – 1901456205
Berdasarkan input untuk mencocokkan records dari 2
tabel dan efisien ketika kedua input terurut dengan
cara yang sama.
Kedua table memiliki clustered index di SalesOrderID,
sehingga optimizer memilih merge join.
Jika optimizer memilih mengurutkan sebelum merge,
maka harus diyakinkan bahwa covering index akan
memproses query lebih cepat.
Pada query ini, row yang terurut discan satu per satu
dan ketika cocok pada kedua sisi, akan direturn.
Merge join efektif apabila query match dua table besar
yang punya leading value yang sama di clustered index
key atau covering index yang diurutkan dengan cara
yang sama.
51. Data modification query plan :
Partition Aware Operations :
Mempartisi table mengizinkan query processor
menambah partisi index ID ke clustered index key
untuk memecah table menjadi group yang lebih kecil.
Timothy Orvin Edwardo – LE01 – 1901456205
Operator yang tersedia :
o Table scan
o Index scan
o Index seek
o Insert
o Update
o Delete
o Merge
Parallel query execution untuk object yang dipartisi :
SQL Server menggunakan konsep parallel untuk
meningkatkan performa query dalam mengakses table
partisi.
Jika banyak thread kurang dari banyak partisi, query
processor assign setiap thread ke partisi berbeda.
Jika banyak thread sama dengan banyak partisi, query
processor assign satu thread ke setiap partisi.
Jika banyak partisi kurang dari banyak thread, query
processor assign lebih dari satu thread ke setiap
partisi.
Timothy Orvin Edwardo – LE01 – 1901456205
52. Cara mencapai query performance yang baik pada table
yang dipartisi :
Gunakan keuntungan multicore processor SQL Server bisa
menggunakan untuk parallel query processing.
Lebih memperhatikan pada merencanakan partisi table
memastikan impact dari query akan meminimalkan poor
performance.
Best partitioning untuk data maintenance belum tentu yang
terbaik untuk partitioning untuk query.
Validasi nonclustered partitioned index performance
pastikan index bisa dipartisi aligned.
Pastikan memiliki clustered index di table partisi sehingga
query processor bisa mengambil keuntungan dari optimisasi
query scanning.
Jika aggregate banyak data dari table partisi, pastikan
memiliki tempdb space yang cukup pada server.
53. Menggabungkan hal – hal yang berfungsi dalam
performance tuning :
Performance tuning proses evaluasi performa sistem dan
query menggunakan tools, query plan, dan DMV.
Key success factor baselining performance metrics dan
mengukur perubahan pada performa setelah ada perubahan
sistem atau code.
Memiliki pengetahuan tentang performance metric di
sistem, dari CPU utilization hingga I/O dan memory
utilization.
Recommended