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.