Saat I/O disk menjadi bottleneck pada instans ApsaraDB RDS for PostgreSQL Anda, fitur akselerasi I/O mengarahkan tabel dan file temporary ke disk cache berkecepatan tinggi, meningkatkan kinerja kueri kompleks hingga 100%. Fitur ini gratis dan tidak memerlukan perubahan pada aplikasi.
Cara kerja
ESSD Umum (Enterprise SSDs) menggunakan arsitektur penyimpanan tiga lapis dengan disk cache berkecepatan tinggi sebagai lapisan antara memori dan penyimpanan ESSD. Fitur akselerasi I/O mengarahkan data temporary ke lapisan cache ini.
Tanpa akselerasi I/O, semua data — termasuk tabel dan file temporary yang dihasilkan selama eksekusi kueri — disimpan di disk cloud. Dengan akselerasi I/O diaktifkan, pelaksana kueri memisahkan data berdasarkan jenisnya:
Data non-temporary (tabel reguler, view): dibaca dari disk cloud ke memori untuk diproses, seperti biasa.
Data temporary (tabel dan file temporary): dibaca dan ditulis langsung di disk cache.
ApsaraDB RDS for PostgreSQL menggunakan ruang tabel rds_temp_tablespace untuk merepresentasikan lapisan disk cache tersebut. Objek temporary — yaitu objek yang dibuat tanpa penugasan ruang tabel eksplisit — secara otomatis ditempatkan di rds_temp_tablespace setelah Anda mengatur parameter temp_tablespaces.
Konten disk cache tidak bersifat persisten. Data yang disimpan di rds_temp_tablespace akan hilang selama perubahan spesifikasi instans atau operasi migrasi data lainnya. Jangan menyimpan objek basis data non-temporary di ruang tabel ini.
Kasus penggunaan
Akselerasi I/O paling efektif ketika kueri menghasilkan volume besar data temporary yang melebihi kapasitas memori yang tersedia:
Pengurutan, pengelompokan, agregasi, dan join: operasi yang menuliskan hasil antara ke disk.
Kueri rekursif menggunakan common table expressions (CTEs): CTE yang menghasilkan kumpulan hasil antara berukuran besar.
Kueri ad hoc tanpa indeks pendukung: filter atau agregasi kompleks yang memerlukan pemindaian penuh.
Kueri analitik pada tabel besar atau beberapa tabel: beban kerja pelaporan dan analitik dengan permintaan I/O tinggi.
Beban kerja yang menggunakan tabel temporary: logika aplikasi apa pun yang secara eksplisit membuat tabel temporary.
Prasyarat
Sebelum mengaktifkan akselerasi I/O, pastikan instans Anda memenuhi semua persyaratan berikut:
| Persyaratan | Nilai |
|---|---|
| Metode penagihan | Langganan atau pay-as-you-go |
| Versi PostgreSQL | 11 atau lebih baru |
| Versi minor mesin | 20231030 atau lebih baru |
| Edisi | RDS High-availability Edition |
| Jenis produk | Jenis produk Standar |
| Jenis penyimpanan | ESSD Umum |
| Keluarga instans | Keluarga instans tujuan umum |
Instans juga harus berada di salah satu wilayah dan zona berikut:
| Wilayah | Zona |
|---|---|
| Tiongkok (Chengdu) | Zona B |
| Tiongkok (Beijing) | Zona I |
| Tiongkok (Shanghai) | Zona M |
| Tiongkok (Shanghai) | Zona N |
| Tiongkok (Hangzhou) | Zona J |
Setelah mengaktifkan I/O Acceleration di halaman pembelian, konfirmasi ketersediaannya di bagian Zone and Network of Primary Node.
Aktifkan akselerasi I/O
Mengaktifkan atau menonaktifkan akselerasi I/O menyebabkan gangguan layanan sekitar 30 detik. Lakukan operasi ini selama jam sepi.
Opsi 1: Aktifkan saat membuat instans (disarankan)
Saat membuat instans RDS, konfigurasikan parameter agar memenuhi prasyarat yang tercantum di atas, lalu aktifkan I/O Acceleration.

Opsi 2: Aktifkan pada instans yang sudah ada
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans berada, lalu klik ID instans tersebut.
Di bagian Basic Information, klik Configure General ESSD di sebelah kanan Storage Type.
Di kotak dialog, aktifkan I/O Acceleration.

Atur parameter temp_tablespaces
Setelah mengaktifkan akselerasi I/O, ruang tabel rds_temp_tablespace dibuat secara otomatis. Atur parameter temp_tablespaces ke rds_temp_tablespace agar objek temporary secara default menggunakan disk cache.
Untuk petunjuk mengubah parameter, lihat Modify the parameters of an ApsaraDB RDS for PostgreSQL instance.
Untuk menerapkan pengaturan hanya pada sesi saat ini, jalankan:
SET temp_tablespace TO 'rds_temp_tablespace';Untuk kembali menggunakan disk cloud, atur temp_tablespaces ke ''.
Verifikasi konfigurasi
Hubungkan ke instans (lihat Connect to an ApsaraDB RDS for PostgreSQL instance), lalu jalankan pernyataan berikut:
-- Buat tabel reguler
CREATE TABLE test_table (di INT);
-- Buat tabel temporary
CREATE TEMPORARY TABLE test_temp_table (id INT);
-- Kueri ruang tabel yang digunakan masing-masing tabel
SELECT
c.relname AS table_name,
COALESCE(t.spcname, 'pg_default') AS tablespace_name
FROM
pg_class c
JOIN
pg_namespace n ON c.relnamespace = n.oid
LEFT JOIN
pg_tablespace t ON c.reltablespace = t.oid
WHERE
c.relkind = 'r'
AND c.relname IN ('test_table', 'test_temp_table');Output yang diharapkan:
table_name | tablespace_name
------------------+---------------------
test_table | pg_default
test_temp_table | rds_temp_tablespace
(2 rows)Munculnya test_temp_table di rds_temp_tablespace mengonfirmasi bahwa akselerasi I/O aktif.
Catatan penggunaan
Ruang disk cache dialokasikan berdasarkan tipe instans Anda. Jika cache penuh, error
ERROR: could not write to file "pg_tblspc/xxxx": No space left on devicedilaporkan untuk pernyataan yang menulis data temporary. Pernyataan SQL yang beroperasi pada data non-temporary tidak terpengaruh.Data di
rds_temp_tablespacetidak bersifat persisten. Data tersebut akan hilang selama perubahan spesifikasi instans atau operasi migrasi data lainnya.
Pemecahan masalah
ERROR: No space left on device
Error ini berarti ruang tabel rds_temp_tablespace penuh. Atasi masalah ini dengan urutan berikut:
Hentikan sesi saat ini dan sambungkan ulang. Instans membersihkan file temporary saat sesi berakhir. Jalankan kembali pernyataan setelah tersambung ulang.
Alihkan kembali ke disk cloud dengan mengatur
temp_tablespaceske''. Ini menghilangkan batasan disk cache tetapi juga menghilangkan manfaat kinerja dari akselerasi I/O.
Langkah selanjutnya
Untuk semua jenis penyimpanan yang didukung oleh ApsaraDB RDS for PostgreSQL, lihat Storage types.
Untuk ikhtisar ESSD Umum dan arsitektur tiga lapisnya, lihat General ESSDs.
Jika beban kerja Anda memiliki permintaan IOPS puncak yang tidak dapat diprediksi, pertimbangkan untuk mengaktifkan I/O burst selain akselerasi I/O.