Meningkatkan performa kueri untuk RDS for PostgreSQL dengan Amazon RDS Optimized Reads - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Meningkatkan performa kueri untuk RDS for PostgreSQL dengan Amazon RDS Optimized Reads

Anda dapat mencapai pemrosesan kueri yang lebih cepat untuk RDS for PostgreSQL dengan Amazon RDS Optimized Reads. Instans DB RDS for PostgreSQL atau klaster DB Multi-AZ yang menggunakan RDS Optimized Reads dapat mencapai pemrosesan kueri hingga 50% lebih cepat dibandingkan dengan yang tidak menggunakannya.

Ikhtisar RDS Optimized Reads di PostgreSQL

Optimized Reads tersedia secara default di RDS for PostgreSQL versi 15.2 dan lebih baru, 14.7 dan lebih baru, serta 13.10 dan lebih baru.

Saat Anda menggunakan instans DB RDS for PostgreSQL atau klaster DB Multi-AZ dengan RDS Optimized Reads diaktifkan, performa kueri yang 50% lebih cepat tercapai menggunakan penyimpanan tingkat blok solid state drive (SSD) berbasis Non-Volatile Memory Express (NVMe) lokal. Anda dapat mencapai pemrosesan kueri yang lebih cepat dengan menempatkan tabel sementara yang dihasilkan oleh PostgreSQL di penyimpanan lokal, yang akan mengurangi lalu lintas ke Elastic Block Storage (EBS) melalui jaringan.

Di PostgreSQL, objek sementara ditetapkan ke namespace sementara yang menurun secara otomatis di akhir sesi. Saat menurun, namespace sementara menghapus objek apa pun yang bergantung pada sesi, termasuk objek yang memenuhi syarat skema, seperti tabel, fungsi, operator, atau bahkan ekstensi.

Di RDS for PostgreSQL, parameter temp_tablespaces dikonfigurasi untuk area kerja sementara ini di mana objek sementara disimpan.

Kueri berikut mengembalikan nama tablespace dan lokasinya.

postgres=> show temp_tablespaces; temp_tablespaces --------------------- rds_temp_tablespace (1 row)

rds_temp_tablespace adalah tablespace yang dikonfigurasi oleh RDS yang menunjuk ke penyimpanan lokal NVMe. Anda selalu dapat beralih kembali ke penyimpanan Amazon EBS dengan memodifikasi parameter ini di Parameter group menggunakan AWS Management Console untuk menunjuk ke tablespace apa pun selain rds_temp_tablespace. Untuk informasi lebih lanjut, lihat Memodifikasi parameter dalam grup parameter DB. Anda juga dapat menggunakan perintah SET untuk memodifikasi nilai parameter temp_tablespaces menjadi pg_default di tingkat sesi menggunakan perintah SET. Memodifikasi parameter akan mengalihkan area kerja sementara ke Amazon EBS. Peralihan kembali ke Amazon EBS akan membantu ketika penyimpanan lokal untuk klaster atau instans RDS Anda tidak cukup untuk melakukan operasi SQL tertentu.

postgres=> SET temp_tablespaces TO 'pg_default'; SET
postgres=> show temp_tablespaces; temp_tablespaces ------------------ pg_default

Kasus penggunaan untuk RDS Optimized Reads

Berikut ini adalah beberapa kasus penggunaan yang dapat memperoleh manfaat dari Optimized Reads:

  • Kueri analitis yang mencakup Ekspresi Tabel Umum (CTE), tabel turunan, dan operasi pengelompokan.

  • Replika baca yang menangani kueri yang tidak dioptimalkan untuk aplikasi.

  • Kueri pelaporan sesuai permintaan atau dinamis dengan operasi kompleks seperti GROUP BY dan ORDER BY yang tidak selalu dapat menggunakan indeks yang sesuai.

  • Beban kerja lain yang menggunakan tabel sementara internal.

  • CREATE INDEXatau REINDEX operasi untuk menyortir.

Praktik terbaik untuk RDS Optimized Reads

Gunakan praktik terbaik berikut untuk RDS Optimized Reads:

  • Tambahkan logika coba lagi untuk kueri hanya baca jika gagal karena penyimpanan instans sudah penuh selama pelaksanaan.

  • Pantau ruang penyimpanan yang tersedia di penyimpanan instans dengan CloudWatch metrikFreeLocalStorage. Jika penyimpanan instans mencapai batasnya karena beban kerja pada instans DB atau klaster DB Multi-AZ, modifikasi untuk menggunakan kelas instans DB yang lebih besar.

Menggunakan RDS Optimized Reads

Saat Anda menyediakan instans DB RDS for PostgreSQL dengan salah satu kelas instans DB berbasis NVMe dalam deployment instans DB satu AZ, deployment instans DB Multi-AZ, atau deployment klaster DB Multi-AZ, instans DB secara otomatis menggunakan RDS Optimized Reads.

Untuk informasi lebih lanjut tentang deployment Multi-AZ, lihat Mengonfigurasi dan mengelola deployment Multi-AZ.

Untuk mengaktifkan RDS Optimized Reads, lakukan salah satu tindakan berikut ini:

  • Buat instans DB RDS for PostgreSQL atau klaster DB Multi-AZ menggunakan salah satu kelas instans berbasis NVMe. Untuk informasi selengkapnya, lihat Membuat instans DB Amazon RDS.

  • Modifikasi instans DB RDS for PostgreSQL atau klaster DB Multi-AZ yang sudah ada untuk menggunakan salah satu kelas instans DB berbasis NVMe. Untuk informasi selengkapnya, lihat Memodifikasi instans DB Amazon RDS.

RDS Optimized Reads tersedia di semua Wilayah AWS di mana satu atau lebih kelas instans DB dengan penyimpanan SSD NVMe lokal didukung. Untuk informasi selengkapnya, lihat DB.

Untuk beralih kembali ke instans RDS baca yang tidak dioptimalkan, modifikasi kelas instans DB dari klaster atau instans RDS Anda menjadi kelas instans serupa yang hanya mendukung penyimpanan EBS untuk beban kerja basis data Anda. Misalnya, jika kelas instans DB saat ini adalah db.r6gd.4xlarge, pilih db.r6g.4xlarge untuk beralih kembali. Untuk informasi lebih lanjut, lihat Memodifikasi instans DB Amazon RDS.

Memantau instans DB yang menggunakan RDS Optimized Reads

Anda dapat memantau instans DB yang menggunakan Bacaan yang Dioptimalkan RDS menggunakan metrik berikut: CloudWatch

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

Metrik ini menyediakan data tentang penyimpanan instans, IOPS, dan throughput yang tersedia. Untuk informasi selengkapnya tentang metrik ini, lihat Metrik CloudWatch tingkat instans Amazon untuk Amazon RDS.

Untuk memantau penggunaan penyimpanan lokal Anda saat ini, masuk ke basis data Anda menggunakan kueri berikut:

SELECT spcname AS "Name", pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS "size" FROM pg_catalog.pg_tablespace WHERE spcname IN ('rds_temp_tablespace');

Untuk informasi selengkapnya tentang file sementara dan penggunaannya, lihat Mengelola file sementara dengan PostgreSQL.

Batasan untuk RDS Optimized Reads di PostgreSQL

Batasan berikut berlaku untuk RDS Optimized Reads di PostgreSQL:

  • Transaksi dapat gagal ketika penyimpanan instans penuh.