Saya telah berbicara tentang pentingnya kinerja throughput berurutan untuk SQL Server untuk beberapa waktu. Throughput berurutan sangat penting untuk banyak operasi umum di SQL Server, termasuk:
- Pencadangan dan pemulihan basis data lengkap
- Pekerjaan pembuatan dan pemeliharaan indeks
- Menginisialisasi snapshot dan langganan replikasi
- Menginisialisasi replika AlwaysOn AG
- Menginisialisasi mirror database
- Menginisialisasi pengiriman log sekunder
- Beban kerja kueri gudang data relasional
- Operasi ETL gudang data relasional
Terlepas dari pentingnya throughput sekuensial untuk SQL Server, saya masih melihat banyak orang yang fokus hanya pada kinerja dan latensi I/O acak, sementara sebagian besar mengabaikan kinerja throughput berurutan. Saat memikirkan kinerja throughput berurutan, Anda perlu mempertimbangkan jalur lengkap data, mulai dari data diam di media penyimpanan, hingga dikonsumsi oleh inti prosesor Anda.
Tergantung pada jenis teknologi penyimpanan yang Anda gunakan, mungkin terhubung ke server host Anda dengan kartu antarmuka jaringan Ethernet (NIC) atau kartu host channel adapter (HCA) InfiniBand. Jenis koneksi ini paling umum untuk iSCSI SAN dan untuk berbagi file blok pesan server jauh (SMB) 3.0. Microsoft TechNet memiliki referensi bagus tentang subjek ini, yang disebut Tingkatkan Kinerja Server File dengan SMB Direct.
Throughput sekuensial teoritis dari perangkat NIC/HCA tunggal (per port) ditunjukkan pada Gambar 1:
Gambar 1:Throughput NIC/HCA Teoretis
Jika Anda bertanya-tanya apa yang dimaksud dengan InfiniBand (QDR) atau Infiniband (FDR), Asosiasi Perdagangan InfiniBand mengelola Peta Jalan InfiniBand yang menunjukkan sejarah dan kemajuan yang direncanakan dalam bandwidth InfiniBand selama beberapa tahun ke depan. Infiniband memiliki daftar akronim yang menggambarkan kinerja relatif dari tautan InfiniBand seperti yang ditunjukkan di bawah ini:
- SDR – Kecepatan Data Tunggal
- DDR – Kecepatan Data Ganda
- QDR – Kecepatan Data Segi Empat
- FDR – Kecepatan Data Empat Belas
- EDR – Kecepatan Data yang Ditingkatkan
- HDR – Kecepatan Data Tinggi
- NDR – Kecepatan Data Berikutnya
SAN saluran serat tradisional (FC) biasanya menggunakan satu atau lebih adaptor bus host (HBA) yang memiliki satu atau lebih port untuk kabel optik yang terhubung ke sakelar FC atau langsung ke FC SAN itu sendiri. Masih relatif jarang melihat HBA FC 16 Gb digunakan secara luas, sehingga sebagian besar server host masih memiliki HBA FC 4 Gb atau 8 Gb.
Throughput sekuensial teoritis dari perangkat HBA tunggal (per port) ditunjukkan pada Gambar 2:
Gambar 2:Throughput HBA Teoretis
Terlepas dari jenis perangkat antarmuka atau teknologi yang Anda gunakan, Anda perlu memperhatikan jenis slot bus ekspansi yang dicolokkan ke server host Anda. Bergantung pada usia server Anda dan jenis prosesor yang digunakannya, hal ini dapat berdampak besar pada total bandwidth yang dapat didukung oleh slot bus. Slot Peripheral Component Interconnect Express (PCIe) Gen 3 memiliki bandwidth dua kali lipat per jalur dibandingkan slot PCIe Gen 2 yang lebih lama. Anda dapat menentukan berapa banyak dan jenis slot ekspansi apa yang Anda miliki di server host Anda dengan melihat spesifikasi dan dokumentasi untuk merek dan model server Anda. Sejauh ini, hanya prosesor keluarga Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3, dan Xeon E7 v2 yang mendukung slot PCIe Gen 3. Apa pun yang lebih tua dari ini akan memiliki slot PCIe Gen 2, atau mungkin bahkan slot PCIe Gen 1 jika sudah sangat tua (dalam istilah komputer).
Throughput sekuensial teoritis dari satu slot PCIe ditunjukkan pada Gambar 3:
Gambar 3:Throughput Slot Ekspansi Teoretis
Sejak diperkenalkannya mikroarsitektur Intel Nehalem pada tahun 2008, semua prosesor server Intel 2P dan yang lebih besar telah mendukung Intel QuickPath Interconnect (QPI) untuk koneksi antara prosesor dan memori di server, memberikan dukungan prosesor yang lebih baru ini untuk Non-Uniform Memory Access (NUMA), yang menggantikan front-side bus (FSB) yang lebih tua. NUMA meningkatkan skalabilitas cukup signifikan karena jumlah prosesor fisik dalam suatu sistem meningkat, terutama bila Anda memiliki empat atau lebih prosesor fisik dalam sistem host.
Prosesor Intel modern memiliki pengontrol memori terintegrasi yang mendukung Intel QPI. Ketika Anda melihat spesifikasi untuk prosesor Intel tertentu dalam database ARK online, Anda akan dapat melihat kinerja QPI yang dinilai dalam GigaTransfers per detik (GT/dtk). GigaTransfer per detik hanyalah satu miliar operasi yang mentransfer data per detik.
Misalnya, prosesor Intel Xeon E5-2667 v3 modern dan canggih (Haswell-EP) memiliki Kecepatan QPI Intel 9,6 GT/dtk, sedangkan prosesor Intel Xeon E5503 (Nehalem-EP) kelas bawah yang lebih lama memiliki Kecepatan Intel QPI hanya 4,8 GT/dtk. Bahkan di antara prosesor dari mikroarsitektur generasi yang sama, Anda akan melihat variasi dalam kecepatan Intel QPI terukur. Misalnya, dalam keluarga Haswell-EP 22nm, prosesor Intel Xeon E5-2603 v3 kelas bawah diberi peringkat 6,4 GT/dtk, sedangkan prosesor Intel Xeon E5-2660 v3 kelas atas diberi peringkat 9,6 GT/dtk. Prosesor Intel Xeon E5, E5 v2, dan E5 v3 memiliki dua tautan QPI per prosesor, sedangkan keluarga prosesor Intel E7 dan E7 v2 memiliki tiga tautan QPI per prosesor.
Throughput sekuensial teoretis dari satu tautan Intel QPI ditunjukkan pada Gambar 4:
Gambar 4:Throughput Intel QPI Teoretis
Bergantung pada usia server host Anda, prosesor persis yang digunakannya, dan jenis, kecepatan, dan jumlah memori yang dipasang, Anda akan memiliki jumlah throughput sekuensial teoretis yang berbeda yang tersedia dari setiap modul memori. Semua prosesor Intel modern memiliki pengontrol memori terintegrasi yang mengontrol jumlah dan frekuensi memori yang akan didukung prosesor. Server host antik terbaru akan menggunakan memori DDR3, sedangkan prosesor Haswell-EP (keluarga Intel Xeon E5 v3) generasi terbaru mendukung memori DDR4. Memori DDR4 mendukung kecepatan yang lebih tinggi, throughput yang lebih tinggi, kepadatan memori yang lebih tinggi, konsumsi daya yang lebih rendah, dan keandalan yang lebih baik dibandingkan dengan memori DDR3.
Throughput sekuensial teoritis dari modul memori tunggal ditunjukkan pada Gambar 5:
Gambar 5:Throughput Modul Memori Teoretis
Saat Anda melihat masing-masing komponen dalam sistem baru yang ada atau yang direncanakan, Anda harus waspada terhadap komponen yang tidak cocok yang dapat menyebabkan kemacetan kinerja sekuensial buatan ke dalam sistem. Misalnya, Anda mungkin memiliki server baru dengan prosesor kelas atas yang lumpuh karena menggunakan 4 Gb FC HBA untuk mengakses SAN. Contoh lain dapat berupa kartu penyimpanan flash PCIe yang sangat cepat atau pengontrol RAID yang dipasang di slot PCIe 2.0 x4 bandwidth rendah, yang secara artifisial membatasi throughput sekuensial total perangkat.
Saya tahu bahwa ini telah banyak informasi teknis untuk dicerna, terutama bagi orang-orang yang bukan penggemar perangkat keras. Saya pikir ide utama yang harus Anda ambil dari artikel ini adalah bahwa kinerja throughput berurutan cukup penting untuk banyak tugas dan beban kerja SQL Server yang umum. Detail tingkat rendah tentang prosesor, jenis memori, slot ekspansi, dan perangkat ekspansi sebenarnya membuat banyak perbedaan dalam kinerja throughput berurutan yang akan Anda dapatkan dari server dan subsistem penyimpanannya. Memiliki throughput sekuensial yang baik membuat hidup Anda jauh lebih mudah sebagai profesional database, memungkinkan Anda untuk mendukung organisasi Anda di tingkat yang jauh lebih tinggi.