All Products
Search
Document Center

ApsaraDB RDS:Masalah I/O Tinggi untuk RDS SQL Server

Last Updated:Mar 30, 2026

Throughput I/O yang tinggi menurunkan kinerja kueri pada instans ApsaraDB RDS for SQL Server. Kinerja I/O diatur oleh dua faktor: IOPS dan throughput I/O. Dalam kebanyakan kasus, IOPS jarang menjadi bottleneck kinerja — throughput I/O lebih mungkin menyebabkan masalah setelah mencapai batas atasnya. Topik ini menjelaskan cara mengidentifikasi akar penyebab dan menerapkan perbaikan yang tepat.

Batas throughput I/O

Throughput I/O maksimum bergantung pada tipe storage yang terhubung ke instans Anda.

Premium Local SSDs

Instans RDS yang menggunakan Premium Local SSDs berbagi storage host fisik dengan instans lain pada host tersebut. Setiap instans memiliki batas IOPS maksimum, tetapi throughput I/O tidak dibatasi per instans — throughput dapat melebihi 1 GB/s. Karena instans berbagi storage dasar, mereka mungkin bersaing untuk sumber daya I/O. Untuk alokasi sumber daya I/O eksklusif, gunakan keluarga instans dedicated host. Untuk informasi selengkapnya, lihat Tipe instans primary ApsaraDB RDS.

Cloud disks

Cloud disks didedikasikan untuk setiap instans, sehingga instans tidak saling bersaing untuk sumber daya I/O. Throughput I/O maksimum untuk instans yang menggunakan cloud disks bergantung pada dua faktor:

Identifikasi tipe beban I/O

Beban I/O pada instans RDS terdiri dari dua komponen utama:

  • Data file reads: Pembacaan halaman data selama eksekusi kueri dan pencadangan.

  • Transaction log reads and writes: Pembacaan log sebagian besar berasal dari operasi pencadangan; penulisan log berasal dari operasi DML (data manipulation language) dan DDL (data definition language).

Untuk mengidentifikasi jenis beban yang menyebabkan throughput I/O tinggi, pantau metrik berikut di tab Performance Insight:

MetrikTipe I/ODeskripsi
Page_ReadsReadHalaman data yang dibaca dari file data per detik yang tidak dapat dilayani dari cache
Page_WriteWriteHalaman data yang ditulis ke file data per detik
Log_Bytes_Flushed/secWriteByte yang ditulis ke file log transaksi per detik
Backup_Restore_Throughput/secReadByte yang dibaca dari atau ditulis ke file data dan file log transaksi per detik selama operasi pencadangan dan pemulihan
Setiap halaman data berukuran 8 KB.

Gunakan tabel berikut untuk mengidentifikasi akar penyebab dan langsung menuju bagian yang relevan:

Metrik yang meningkatAkar penyebabLanjut ke
Page_ReadsCache tidak mencukupi (halaman data dibaca dari disk)I/O tinggi akibat pembacaan halaman data
Page_Write, Log_Bytes_Flushed/secBeban kerja DML atau DDL yang beratI/O tinggi akibat operasi tulis
Backup_Restore_Throughput/secAktivitas pencadanganI/O tinggi akibat pencadangan

Lihat metrik throughput I/O

Prosedur ini tidak berlaku untuk instans yang menjalankan SQL Server 2008 R2 dengan cloud disks.
  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans Anda berada. Temukan instans tersebut dan klik ID-nya.

  2. Di panel navigasi kiri, pilih Autonomy Services > Performance Optimization. Pada halaman yang muncul, klik tab Performance Insight.

  3. Di pojok kanan atas, klik Custom metric. Di kotak dialog, pilih I/O Throughput lalu klik OK. Memilih I/O Throughput akan menambahkan metrik berikut ke grafik:

    • IO_Throughput_Read_Kb: Throughput I/O per detik untuk operasi baca disk.

    • IO_Throughput_Write_kb: Throughput I/O per detik untuk operasi tulis disk.

    • IO_Throughput_Total_Kb: Gabungan throughput I/O baca dan tulis per detik.

    IO throughput

  4. Untuk menganalisis jenis beban tertentu, klik lagi Custom metric dan tambahkan metrik dari tabel di Identifikasi tipe beban I/O.

Analisis kasus

Contoh berikut menunjukkan cara menginterpretasikan data throughput I/O dalam rentang waktu berbeda.

IO吞吐量pagelog备份

Beban baca secara keseluruhan melebihi beban tulis. Throughput stabil dari pukul 08.00 hingga 22.00, dengan puncak pada pukul 01.00–03.00 dan 22.00–24.00.

Peak at ~01:00 — Lonjakan pembacaan halaman data mencapai sekitar 50.000 halaman/detik (~400 MB/detik), menunjukkan tekanan pada cache yang memicu pembacaan disk.

Puncak pukul 02.00–03.00 — Empat sumber bergabung mencapai puncak kumulatif sekitar 150 MB/s:

SumberThroughput
Pembacaan halaman data~40 MB/s
Penulisan halaman data~40 MB/s
Penulisan log transaksi~30 MB/s
Cadangan log~50 MB/s

Kondisi stabil pukul 08.00–22.00 — Tiga sumber diurutkan berdasarkan proporsi:

SumberThroughput
Pembacaan halaman data80–100 MB/s
Penulisan halaman data~30 MB/s
Penulisan log transaksi~5 MB/s

Puncak pukul 22.00–24.00 — Hanya aktivitas pencadangan, berlangsung stabil di atas 220 MB/s.

Pemecahan masalah I/O tinggi akibat pembacaan halaman data

Pembacaan halaman data berlebihan merupakan penyebab paling umum dari I/O tinggi pada instans ApsaraDB RDS for SQL Server. Ketika kolam buffer terlalu kecil untuk menampung data yang sering diakses, SQL Server harus membaca halaman data dari disk setiap kali terjadi cache miss.

Diagnosis tekanan cache menggunakan PLE

Page Life Expectancy (PLE) mengukur waktu rata-rata, dalam detik, suatu halaman data tetap berada di kolam buffer sebelum dikeluarkan. Penurunan PLE menunjukkan meningkatnya tekanan cache.

Ambang batas PLE sehat minimum adalah 300 detik. Untuk instans dengan memori lebih besar, hitung ambang batas yang direkomendasikan sebagai berikut:

Ambang batas PLE yang direkomendasikan = (Memori kolam buffer dalam GB / 4) × 300

Contoh: Instans dengan RAM 16 GB mengalokasikan hingga 12 GB untuk kolam buffer.

Ambang batas PLE yang direkomendasikan = (12 / 4) × 300 = 900 detik

Jika PLE secara konsisten berada di bawah ambang batas Anda, kolam buffer terlalu kecil untuk beban kerja tersebut. Untuk latar belakang metrik ini, lihat Page Life Expectancy (PLE) in SQL Server.

Atasi I/O tinggi akibat pembacaan halaman data

Perbaikan utama adalah meningkatkan spesifikasi memori instans. Jangan meningkatkan tingkat kinerja disk (PL) untuk mengatasi I/O yang dominan membaca — kolam buffer yang lebih besar mengurangi pembacaan disk sejak awal.

Untuk lebih mengurangi jumlah total halaman data yang harus dibaca:

  • Arsipkan atau hapus data historis.

  • Aktifkan kompresi data pada tabel besar.

  • Hapus indeks bernilai rendah.

  • Defragmentasi indeks untuk mengurangi fragmentasi indeks.

Pemecahan masalah I/O tinggi akibat operasi tulis

I/O tulis tinggi disebabkan oleh operasi DML atau DDL. Gunakan Autonomy Services untuk memeriksa operasi mana yang sedang berjalan selama periode I/O tinggi.

Operasi DML yang menghasilkan I/O tulis meliputi INSERT, DELETE, UPDATE, dan MERGE. Operasi DDL meliputi CREATE INDEX dan ALTER INDEX.

I/O tinggi akibat operasi DML

Pertama, tentukan apakah aktivitas DML tersebut merupakan beban kerja rutin atau tugas sementara.

Beban kerja tidak rutin (misalnya, pengarsipan data massal atau pemrosesan data satu kali): Jadwalkan operasi ini selama jam sepi untuk menghindari persaingan dengan trafik produksi.

Beban kerja rutin: Tingkatkan tingkat kinerja disk (PL). Misalnya, tingkatkan ESSD dari PL1 ke PL2. Selain itu, tinjau struktur indeks dan hapus indeks nonclustered yang tidak lagi diperlukan, karena indeks yang tidak perlu meningkatkan amplifikasi tulis.

I/O tinggi akibat operasi DDL

Operasi DDL seperti pembuatan dan rebuild indeks biasanya merupakan tugas maintenance. Jadwalkan operasi tersebut selama jam sepi.

Saat menjalankan CREATE INDEX atau ALTER INDEX, tentukan tingkat paralelisme maksimum (MAXDOP) dalam pernyataan SQL. Menetapkan MAXDOP membatasi jumlah thread paralel yang digunakan, sehingga mengurangi throughput I/O puncak yang dihasilkan oleh operasi tersebut — dengan konsekuensi waktu eksekusi yang lebih lama.

Pemecahan masalah I/O tinggi akibat pencadangan

ApsaraDB RDS for SQL Server hanya menjalankan pencadangan pada instans primary, yang menambah beban I/O instans primary. Cadangan penuh memberikan dampak terbesar; cadangan log memberikan dampak terkecil.

Untuk melihat durasi pencadangan instans Anda, buka halaman Backup and Restoration di konsol ApsaraDB RDS.

Backup execution time

Jadwalkan pencadangan agar tidak bertepatan dengan jam sibuk

Tetapkan waktu mulai dan siklus pencadangan untuk meminimalkan tumpang tindih dengan jam sibuk produksi. Untuk langkah-langkah konfigurasi detail, lihat Mencadangkan instans ApsaraDB RDS for SQL Server.

Contoh 1: Cadangan penuh membutuhkan waktu sekitar 6 jam. Jam sibuk bisnis berlangsung dari pukul 09.00 hingga 21.00, dan pekerjaan pemrosesan latar belakang berjalan dari pukul 22.00 hingga 01.00. Tetapkan waktu mulai pencadangan pada pukul 01.00–02.00. Setiap pencadangan selesai sebelum pukul 08.00. Atur siklus pencadangan setiap hari dalam seminggu agar garis dasar pemulihan tetap mutakhir, yang mempercepat pemulihan titik-waktu-tertentu.

Contoh 2: Cadangan penuh membutuhkan waktu sekitar 15 jam dan mengganggu beban kerja hari kerja setiap kali dijalankan. Atur siklus pencadangan hanya pada hari Sabtu dan Minggu. Perhatikan bahwa dengan frekuensi cadangan penuh yang lebih rendah, pemulihan titik-waktu-tertentu mungkin memerlukan waktu lebih lama karena lebih banyak cadangan log yang harus diputar ulang.

Ketika penjadwalan saja tidak cukup

Jika menyesuaikan jadwal pencadangan tidak menyelesaikan konflik dengan beban kerja Anda:

  • Tingkatkan tingkat kinerja disk (PL): PL disk yang lebih tinggi menyediakan throughput I/O lebih besar, memberikan ruang gerak lebih bagi pencadangan maupun beban kerja.

  • Pisahkan data Anda ke beberapa instans: Dataset yang lebih kecil per instans mengurangi durasi pencadangan sekaligus I/O yang dihasilkan per sesi pencadangan.