Meningkatkan kinerja kueri untuk Aurora Postgre SQL dengan Aurora Optimized Reads - Amazon Aurora

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

Meningkatkan kinerja kueri untuk Aurora Postgre SQL dengan Aurora Optimized Reads

Anda dapat mencapai pemrosesan kueri yang lebih cepat untuk Aurora Postgre SQL dengan Aurora Optimized Reads. Instans Aurora Postgre SQL DB yang menggunakan Aurora Optimized Reads memberikan latensi kueri hingga 8x yang ditingkatkan dan penghematan biaya hingga 30% untuk aplikasi dengan kumpulan data besar, yang melebihi kapasitas memori instans DB.

Ikhtisar Pembacaan yang Dioptimalkan Aurora di Postgre SQL

Bacaan yang Dioptimalkan Aurora tersedia secara default saat Anda membuat cluster DB yang menggunakan instans R6GD berbasis Graviton dan R6id berbasis Intel dengan penyimpanan memori express () non-volatile. NVMe Ini tersedia dari versi Postgre SQL berikut:

  • 16.1 dan semua versi yang lebih tinggi

  • 15.4 dan versi yang lebih tinggi

  • 14.9 dan versi yang lebih tinggi

Aurora Optimized Reads mendukung dua kemampuan: cache berjenjang dan objek sementara.

Cache berjenjang yang didukung Optimized Reads - Menggunakan cache berjenjang, Anda dapat memperluas kapasitas caching instans DB hingga 5x memori instans. Kemampuan ini secara otomatis mempertahankan cache untuk menyimpan data terbaru yang konsisten secara transaksional, sehingga membebaskan aplikasi dari overhead dalam mengelola keterkinian data dalam solusi caching berbasis hasil set eksternal. Kemampuan ini menawarkan latensi hingga 8x lebih baik untuk kueri yang sebelumnya mengambil data dari penyimpanan Aurora.

Di Aurora, nilai untuk shared_buffers dalam kelompok parameter default biasanya diatur ke sekitar 75% dari memori yang tersedia. Namun, untuk jenis instans r6gd dan r6id, Aurora akan mengurangi shared_buffers ruang sebesar 4,5% untuk meng-host metadata untuk cache Bacaan yang Dioptimalkan.

Objek sementara yang diaktifkan Bacaan yang dioptimalkan - Menggunakan objek sementara, Anda dapat mencapai pemrosesan kueri yang lebih cepat dengan menempatkan file sementara yang dihasilkan oleh Postgre SQL di penyimpanan lokal. NVMe Ini mengurangi lalu lintas ke Elastic Block Storage (EBS) melalui jaringan. Ini menawarkan latensi dan throughput hingga 2x lebih baik untuk kueri lanjutan yang mengurutkan, menggabungkan, atau menggabungkan volume besar data yang tidak sesuai dengan kapasitas memori yang tersedia pada instans DB.

Pada cluster Aurora I/O-Optimized, Optimized Reads menggunakan cache berjenjang dan objek sementara pada penyimpanan. NVMe Dengan kemampuan cache berjenjang yang didukung Optimized Reads, Aurora mengalokasikan 2x memori instans untuk objek sementara, sekitar 10% penyimpanan untuk operasi internal, dan penyimpanan yang tersisa sebagai cache berjenjang. Pada klaster Standar Aurora, Optimized Reads hanya menggunakan objek sementara.

Engine Konfigurasi penyimpanan klaster Objek sementara yang didukung Optimized Reads Cache berjenjang yang didukung Optimized Reads Versi yang didukung
Aurora SQL Postgre -Edisi Kompatibel Standar Ya Tidak Aurora Postgre SQL versi 16.1 dan semua versi yang lebih tinggi, 15.4 dan lebih tinggi, versi 14.9 dan lebih tinggi
I/O Dioptimalkan Ya Ya
catatan

Peralihan antara cluster yang dioptimalkan oleh iOS dan standar pada kelas instans DB NVMe berbasis menyebabkan restart mesin database langsung.

Di Aurora PostgreSQL, gunakan temp_tablespaces parameter untuk mengkonfigurasi ruang tabel tempat objek sementara disimpan.

Untuk memeriksa apakah objek sementara dikonfigurasi, gunakan perintah berikut:

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

aurora_temp_tablespaceIni adalah tablespace yang dikonfigurasi oleh Aurora yang menunjuk ke penyimpanan lokalNVMe. Anda tidak dapat mengubah parameter ini atau beralih kembali ke EBS penyimpanan Amazon.

Untuk memeriksa apakah cache baca yang dioptimalkan diaktifkan, gunakan perintah berikut:

postgres=> show shared_preload_libraries; shared_preload_libraries -------------------------------------------------------- rdsutils,pg_stat_statements,aurora_optimized_reads_cache

Menggunakan Aurora Optimized Reads

Saat Anda menyediakan instans Aurora Postgre SQL DB dengan salah satu instans DB NVMe berbasis, instans DB secara otomatis menggunakan Aurora Optimized Reads.

Untuk mengaktifkan Aurora Optimized Reads, lakukan salah satu hal berikut ini:

Bacaan yang Dioptimalkan Aurora tersedia di semua Wilayah AWS di mana satu atau lebih kelas instans DB dengan NVMe SSD penyimpanan lokal didukung. Untuk informasi selengkapnya, lihat Kelas instans Amazon Aurora DB.

Untuk beralih kembali ke instance Aurora pembacaan yang tidak dioptimalkan, ubah kelas instans DB dari instance Aurora Anda ke kelas instance serupa NVMe tanpa penyimpanan sementara untuk beban kerja database Anda. Misalnya, jika kelas instans DB saat ini adalah db.r6gd.4xlarge, pilih db.r6g.4xlarge untuk beralih kembali. Untuk informasi selengkapnya, lihat Memodifikasi instans Aurora DB.

Kasus penggunaan untuk Aurora Optimized Reads

Cache berjenjang yang didukung Optimized Reads

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

  • Aplikasi skala internet seperti pemrosesan pembayaran, penagihan, e-commerce dengan kinerja SLAs yang ketat.

  • Dasbor pelaporan waktu nyata yang menjalankan ratusan kueri titik untuk pengumpulan metrik/data.

  • Aplikasi AI generatif dengan ekstensi pgvector untuk mencari neighbor yang tepat atau terdekat dalam jutaan penyematan vektor.

Objek sementara yang didukung Optimized Reads

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

  • Kueri analitis yang mencakup Ekspresi Tabel Umum (CTEs), 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.

  • CREATE INDEXatau REINDEX operasi untuk menyortir.

  • Beban kerja lain yang menggunakan tabel sementara internal.

Memantau instans DB yang menggunakan Aurora Optimized Reads

Anda dapat memantau kueri yang menggunakan cache berjenjang Optimized Reads-enabled dengan EXPLAIN perintah seperti yang ditunjukkan pada contoh berikut:

Postgres=> EXPLAIN (ANALYZE, BUFFERS) SELECT c FROM sbtest15 WHERE id=100000000 QUERY PLAN -------------------------------------------------------------------------------------- Index Scan using sbtest15_pkey on sbtest15 (cost=0.57..8.59 rows=1 width=121) (actual time=0.287..0.288 rows=1 loops=1) Index Cond: (id = 100000000) Buffers: shared hit=3 read=2 aurora_orcache_hit=2 I/O Timings: shared/local read=0.264 Planning: Buffers: shared hit=33 read=6 aurora_orcache_hit=6 I/O Timings: shared/local read=0.607 Planning Time: 0.929 ms Execution Time: 0.303 ms (9 rows) Time: 2.028 ms
catatan

aurora_orcache_hitdan aurora_storage_read bidang di Buffers bagian rencana penjelasan hanya ditampilkan ketika Pembacaan yang Dioptimalkan diaktifkan dan nilainya lebih besar dari nol. Bidang baca adalah total aurora_storage_read bidang aurora_orcache_hit dan.

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

  • AuroraOptimizedReadsCacheHitRatio

  • FreeEphemeralStorage

  • ReadIOPSEphemeralStorage

  • ReadLatencyEphemeralStorage

  • ReadThroughputEphemeralStorage

  • WriteIOPSEphemeralStorage

  • WriteLatencyEphemeralStorage

  • WriteThroughputEphemeralStorage

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

Anda juga dapat menggunakan pg_proctab ekstensi untuk memantau NVMe penyimpanan.

postgres=>select * from pg_diskusage(); major | minor | devname | reads_completed | reads_merged | sectors_read | readtime | writes_completed | writes_merged | sectors_written | writetime | current_io | iotime | totaliotime ------+-------+---------------------+-----------------+--------------+--------------+----------+------------------+---------------+-----------------+-----------+------------+---------+------------- | | rdstemp | 23264 | 0 | 191450 | 11670 | 1750892 | 0 | 24540576 | 819350 | 0 | 3847580 | 831020 | | rdsephemeralstorage | 23271 | 0 | 193098 | 2620 | 114961 | 0 | 13845120 | 130770 | 0 | 215010 | 133410 (2 rows)

Praktik terbaik untuk Aurora Optimized Reads

Gunakan praktik terbaik berikut untuk Aurora Optimized Reads:

  • Pantau ruang penyimpanan yang tersedia di penyimpanan instans dengan CloudWatch metrikFreeEphemeralStorage. Jika penyimpanan instance mencapai batasnya karena beban kerja pada instans DB, atur konkurensi dan kueri yang banyak menggunakan objek sementara atau memodifikasinya untuk menggunakan kelas instans DB yang lebih besar.

  • Pantau CloudWatch metrik untuk hit rate cache Optimized Reads. Operasi seperti VACUUM memodifikasi sejumlah besar blok dengan sangat cepat. Hal ini dapat menyebabkan penurunan sementara dalam rasio hit. Ekstensi pg_prewarm dapat digunakan untuk memuat data ke dalam cache buffer yang memungkinkan Aurora secara proaktif menulis beberapa blok tersebut ke cache Optimized Reads.

  • Anda dapat mengaktifkan manajemen cache cluster (CCM) untuk menghangatkan cache buffer dan cache berjenjang pada pembaca tier-0, yang akan digunakan sebagai target failover. Ketika CCM diaktifkan, cache buffer dipindai secara berkala untuk menulis halaman yang memenuhi syarat untuk penggusuran dalam cache berjenjang. Untuk informasi lebih lanjut tentangCCM, lihatPemulihan cepat setelah failover dengan manajemen cache klaster untuk Aurora PostgreSQL.