Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan fitur PostgreSQL yang didukung oleh Amazon RDS for PostgreSQL
Amazon RDS for PostgreSQL mendukung banyak fitur PostgreSQL yang paling umum. Misalnya, PostgreSQL memiliki fitur autovacuum yang melakukan pemeliharaan rutin pada basis data. Fitur autovacuum aktif secara default. Meskipun Anda dapat menonaktifkan fitur ini, kami sangat menyarankan Anda untuk tetap mengaktifkannya. Memahami fitur ini dan apa yang dapat Anda lakukan untuk memastikannya berfungsi sebagaimana mestinya adalah tugas dasar setiap DBA. Untuk informasi selengkapnya tentang autovacuum, lihat Bekerja dengan fitur autovacuum PostgreSQL di Amazon RDS for PostgreSQL. Untuk mempelajari lebih lanjut tentang tugas DBA umum lainnya, Tugas DBA umum untuk Amazon RDS for PostgreSQL.
RDS for PostgreSQL juga mendukung ekstensi yang menambahkan fungsionalitas penting pada instans DB. Misalnya, Anda dapat menggunakan ekstensi PostGIS untuk bekerja dengan data spasial, atau menggunakan ekstensi pg_cron untuk menjadwalkan pemeliharaan dari dalam instans. Untuk informasi selengkapnya tentang ekstensi PostgreSQL, lihat Menggunakan ekstensi PostgreSQL dengan Amazon RDS for PostgreSQL.
Pembungkus data asing adalah jenis ekstensi spesifik yang dirancang agar instans DB RDS for PostgreSQL Anda bekerja dengan basis data komersial atau jenis data lainnya. Untuk informasi selengkapnya tentang pembungkus data asing yang didukung untuk RDS for PostgreSQL, lihat Bekerja dengan pembungkus data asing yang didukung untuk Amazon RDS for PostgreSQL.
Berikut ini, Anda dapat menemukan informasi tentang beberapa fitur lain yang didukung oleh RDS for PostgreSQL.
Topik
- Jenis data kustom dan enumerasi dengan RDS for PostgreSQL
- Pemicu peristiwa untuk RDS for PostgreSQL
- Halaman besar untuk RDS for PostgreSQL
- Melakukan replikasi logis untuk Amazon RDS for PostgreSQL
- Disk RAM untuk stats_temp_directory
- Tablespace untuk RDS for PostgreSQL
- Kolasi RDS for PostgreSQL untuk EBCDIC dan migrasi mainframe lainnya
Jenis data kustom dan enumerasi dengan RDS for PostgreSQL
PostgreSQL mendukung pembuatan jenis data kustom dan dapat digunakan dengan enumerasi. Untuk informasi selengkapnya tentang membuat dan bekerja dengan enumerasi serta jenis data lainnya, lihat Enumerated types
Berikut ini adalah contoh pembuatan suatu jenis sebagai enumerasi lalu memasukkan nilai ke dalam tabel.
CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');
CREATE TYPE
CREATE TABLE t1 (colors rainbow);
CREATE TABLE
INSERT INTO t1 VALUES ('red'), ( 'orange');
INSERT 0 2
SELECT * from t1;
colors -------- red orange (2 rows)
postgres=>
ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson';
ALTER TYPE
postgres=>
SELECT * from t1;
colors --------- crimson orange (2 rows)
Pemicu peristiwa untuk RDS for PostgreSQL
Semua versi PostgreSQL saat ini mendukung pemicu peristiwa, dan begitu juga semua versi RDS yang tersedia untuk PostgreSQL. Anda dapat menggunakan akun pengguna utama (default, postgres
) untuk membuat, memodifikasi, mengganti nama, dan menghapus pemicu peristiwa. Pemicu peristiwa berada di tingkat instans DB, sehingga dapat diterapkan ke semua basis data pada sebuah instans.
Misalnya, kode berikut membuat pemicu peristiwa yang mencetak pengguna saat ini di akhir setiap perintah bahasa definisi data (DDL).
CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();
Untuk informasi lebih lanjut tentang pemicu peristiwa PostgreSQL, lihat Event triggers
Ada beberapa batasan dalam penggunaan pemicu peristiwa PostgreSQL di Amazon RDS. Hal ini mencakup:
-
Anda tidak dapat membuat pemicu peristiwa pada replika baca. Namun, Anda dapat membuat pemicu peristiwa di sumber replika baca. Pemicu peristiwa kemudian disalin ke replika baca. Pemicu peristiwa pada replika baca tidak diaktifkan pada replika baca saat perubahan didorong dari sumber. Namun, jika replika baca dipromosikan, pemicu peristiwa yang ada aktif saat operasi basis data terjadi.
-
Untuk melakukan peningkatan versi utama ke instans DB PostgreSQL yang menggunakan pemicu peristiwa, hapus pemicu peristiwa sebelum meningkatkan instans tersebut.
Halaman besar untuk RDS for PostgreSQL
Halaman besar adalah fitur manajemen memori yang mengurangi overhead saat instans DB menangani potongan besar memori yang berdekatan, seperti yang digunakan oleh buffer bersama. Fitur PostgreSQL ini didukung oleh semua versi RDS for PostgreSQL yang tersedia saat ini. Anda mengalokasikan halaman besar untuk aplikasi Anda menggunakan panggilan ke memori bersama mmap
atau SYSV
. RDS for PostgreSQL mendukung ukuran halaman 4-KB dan 2-MB.
Anda dapat mengaktifkan atau menonaktifkan halaman besar dengan mengubah nilai parameter huge_pages
. Fitur ini diaktifkan secara default untuk semua kelas instans DB selain kelas instans DB mikro, kecil, dan menengah.
RDS for PostgreSQL menggunakan halaman besar berdasarkan memori bersama yang tersedia. Jika instans DB tidak dapat menggunakan halaman besar karena batasan memori bersama, Amazon RDS mencegah dimulainya instans DB. Dalam kasus ini, Amazon RDS mengatur status instans DB ke parameter yang tidak kompatibel. Jika ini terjadi, Anda dapat mengatur parameter huge_pages
ke off
agar Amazon RDS dapat memulai instans DB.
Parameter shared_buffers
adalah kunci untuk mengatur kumpulan memori bersama yang diperlukan untuk menggunakan halaman besar. Nilai default untuk parameter shared_buffers
menggunakan basis data parameter makro. Makro ini mengatur persentase dari total 8 KB halaman yang tersedia untuk memori instans DB. Saat Anda menggunakan halaman besar, halaman tersebut berada dengan halaman besar. Amazon RDS menempatkan instans DB ke dalam status parameter yang tidak kompatibel jika parameter memori bersama diatur untuk memerlukan lebih dari 90 persen memori instans DB.
Untuk mempelajari lebih lanjut tentang manajemen memori PostgreSQL, lihat Resource Consumption
Melakukan replikasi logis untuk Amazon RDS for PostgreSQL
Dimulai dengan versi 10.4, RDS for PostgreSQL mendukung publikasi dan langganan sintaks yang diperkenalkan di PostgreSQL 10. Untuk mempelajari selengkapnya, lihat Logical replication
catatan
Selain fitur replikasi logis PostgreSQL asli yang diperkenalkan di PostgreSQL 10, RDS for PostgreSQL juga mendukung ekstensi pglogical
. Untuk informasi selengkapnya, lihat Menggunakan pglogical untuk menyinkronkan data di seluruh instans.
Berikut ini, Anda dapat menemukan informasi tentang pengaturan replikasi logis untuk instans DB RDS for PostgreSQL.
Memahami replikasi logis dan decoding logis
RDS for PostgreSQL mendukung streaming write-ahead log (WAL) menggunakan slot replikasi logis PostgreSQL. Penggunaan decoding logis juga didukung. Anda dapat menyiapkan slot replikasi logis pada instans Anda dan mengalirkan perubahan basis data melalui slot ini ke klien seperti pg_recvlogical
. Anda membuat slot replikasi logis di tingkat basis data, dan slot tersebut mendukung koneksi replikasi ke satu basis data.
Klien paling umum untuk replikasi logis PostgreSQL adalah AWS Database Migration Service atau host yang dikelola secara kustom pada instans Amazon EC2. Slot replikasi logis tidak memiliki informasi tentang penerima aliran. Selain itu, target tidak perlu merupakan basis data replika. Jika Anda menyiapkan slot replikasi logis dan tidak membaca dari slot, data dapat ditulis dan mengisi penyimpanan instans DB Anda dengan cepat.
Anda mengaktifkan replikasi logis PostgreSQL dan decoding logis untuk Amazon RDS dengan parameter, jenis koneksi replikasi, dan peran keamanan. Klien untuk decoding logis dapat berupa klien yang dapat membuat koneksi replikasi ke basis data pada instans DB PostgreSQL.
Cara mengaktifkan decoding logis untuk instans DB RDS for PostgreSQL
-
Pastikan akun pengguna yang Anda gunakan memiliki peran berikut:
-
Peran
rds_superuser
agar Anda dapat mengaktifkan replikasi logis -
Peran
rds_replication
untuk memberikan izin guna mengelola slot logis dan mengalirkan data menggunakan slot logis
-
-
Atur parameter statis
rds.logical_replication
ke 1. Sebagai bagian dari penerapan parameter ini, atur juga parameterwal_level
,max_wal_senders
,max_replication_slots
, danmax_connections
. Perubahan parameter ini dapat meningkatkan pembuatan WAL, jadi atur parameterrds.logical_replication
hanya saat Anda menggunakan slot logis. -
Reboot instans DB agar parameter
rds.logical_replication
statis berlaku. -
Buat slot replikasi logis sebagaimana dijelaskan di bagian selanjutnya. Proses ini mengharuskan Anda menentukan plugin decoding. Saat ini, RDS for PostgreSQL mendukung plugin output test_decoding dan wal2json yang dikirimkan dengan PostgreSQL.
Untuk informasi selengkapnya tentang decoding logis PostgreSQL, lihat dokumentasi PostgreSQL
Menggunakan slot replikasi logis
Anda dapat menggunakan perintah SQL untuk bekerja dengan slot logis. Misalnya, perintah berikut membuat slot logis bernama test_slot
menggunakan plugin output test_decoding
PostgreSQL default.
SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding');
slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)
Untuk membuat daftar slot logis, gunakan perintah berikut.
SELECT * FROM pg_replication_slots;
Untuk membatalkan daftar slot logis, gunakan perintah berikut.
SELECT pg_drop_replication_slot('test_slot');
pg_drop_replication_slot ----------------------- (1 row)
Untuk contoh selengkapnya tentang bekerja dengan slot replikasi logis, lihat Logical decoding examples
Setelah Anda membuat slot replikasi logis, Anda dapat memulai pengaliran. Contoh berikut menunjukkan bagaimana decoding logis dikontrol melalui protokol replikasi streaming. Contoh ini menggunakan program pg_recvlogical, yang termasuk dalam distribusi PostgreSQL. Untuk melakukan hal ini, autentikasi klien perlu disiapkan untuk memungkinkan koneksi replikasi.
pg_recvlogical -d postgres --slot test_slot -U postgres --host -
instance-name.111122223333
.aws-region
.rds.amazonaws.com -f - --start
Untuk melihat isi tampilan pg_replication_origin_status
, kueri fungsi pg_show_replication_origin_status
.
SELECT * FROM pg_show_replication_origin_status();
local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)
Disk RAM untuk stats_temp_directory
Anda dapat menggunakan parameter rds.pg_stat_ramdisk_size
RDS for PostgreSQL untuk menentukan memori sistem yang dialokasikan ke disk RAM untuk menyimpan stats_temp_directory
PostgreSQL. Parameter disk RAM tersedia untuk semua versi PostgreSQL di Amazon RDS.
Pada beban kerja tertentu, mengatur parameter ini dapat meningkatkan performa dan menurunkan kebutuhan IO. Untuk informasi lebih lanjut tentang stats_temp_directory
, lihat dokumentasi PostgreSQL.
Untuk mengatur disk RAM untuk stats_temp_directory
, atur parameter rds.pg_stat_ramdisk_size
ke nilai literal integer dalam grup parameter yang digunakan oleh instans DB Anda. Parameter ini menunjukkan MB, jadi Anda harus menggunakan nilai integer. Ekspresi, rumus, dan fungsi tidak valid untuk parameter rds.pg_stat_ramdisk_size
. Pastikan untuk melakukan rebott instans DB agar perubahan diterapkan. Untuk informasi tentang mengatur parameter, lihat Menggunakan grup parameter.
Misalnya, perintah AWS CLI berikut mengatur parameter disk RAM ke 256 MB.
aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"
Setelah Anda melakukan reboot, jalankan perintah berikut untuk melihat status stats_temp_directory
.
postgres=>
SHOW stats_temp_directory;
Perintah tersebut akan menghasilkan hal berikut.
stats_temp_directory
---------------------------
/rdsdbramdisk/pg_stat_tmp
(1 row)
Tablespace untuk RDS for PostgreSQL
RDS for PostgreSQL mendukung tablespace untuk kompatibilitas. Karena semua penyimpanan berada pada satu volume logis, Anda tidak dapat menggunakan tablespace untuk pemisahan atau isolasi I/O. Tolok ukur dan pengalaman kami menunjukkan bahwa satu volume logis adalah penyiapan terbaik untuk sebagian besar kasus penggunaan.
Untuk membuat dan menggunakan tablespace dengan instans DB RDS for PostgreSQL Anda memerlukan peran rds_superuser
. Akun pengguna utama instans DB RDS for PostgreSQL Anda (nama default, postgres
) adalah anggota peran ini. Untuk informasi selengkapnya, lihat Memahami peran dan izin PostgreSQL.
Jika Anda menentukan nama file saat membuat tablespace, awalan jalurnya adalah /rdsdbdata/db/base/tablespace
. Contoh berikut menempatkan file tablespace di /rdsdbdata/db/base/tablespace/data
. Contoh ini mengasumsikan bahwa pengguna (peran) dbadmin
ada dan telah diberikan peran rds_superuser
yang diperlukan untuk bekerja dengan tablespace.
postgres=>
CREATE TABLESPACE act_data OWNER dbadmin LOCATION '/data';
CREATE TABLESPACE
Untuk mempelajari selengkapnya tentang tablespace PostgreSQL, lihat Tablespaces
Kolasi RDS for PostgreSQL untuk EBCDIC dan migrasi mainframe lainnya
RDS for PostgreSQL versi 10 dan yang lebih tinggi termasuk ICU versi 60.2, yang didasarkan pada Unicode 10.0 dan mencakup kolasi dari Unicode Common Locale Data Repository, CLDR 32. Pustaka internasionalisasi perangkat lunak ini memastikan bahwa pengodean karakter disajikan secara konsisten, terlepas dari sistem operasi atau platform. Untuk informasi selengkapnya tentang Unicode CLDR-32, lihat CLDR 32 Release Note
Mulai dari versi 14.3, RDS for PostgreSQL juga mencakup kolasi yang membantu integrasi data dan konversi dari sistem berbasis EBCDIC. Kode pertukaran desimal kode biner yang diperluas atau pengodean EBCDIC biasanya digunakan oleh sistem operasi mainframe. Kolasi yang disediakan Amazon RDS ini didefinisikan secara sempit untuk hanya mengurutkan karakter Unicode yang langsung dipetakan ke halaman kode EBCDIC. Karakter diurutkan dalam urutan titik kode EBCDIC untuk memungkinkan validasi data setelah konversi. Kolasi ini tidak menyertakan formulir denormalisasi, juga tidak menyertakan karakter Unicode yang tidak langsung memetakan ke karakter di halaman kode EBCDIC sumber.
Pemetaan karakter antara halaman kode EBCDIC dan titik kode Unicode didasarkan pada tabel yang diterbitkan oleh IBM. Set lengkap tersedia dari IBM sebagai file terkompresi
Unicode to EBCDIC collations table – Beberapa alat migrasi data mainframe secara internal menggunakan LATIN1 atau LATIN9 untuk mengodekan dan memproses data Alat tersebut menggunakan skema pulang-pergi untuk menjaga integritas data dan mendukung konversi terbalik. Kolasi dalam tabel ini dapat digunakan oleh alat yang memproses data menggunakan pengodean LATIN1, yang tidak memerlukan penanganan khusus.
Unicode to LATIN9 collations table— Anda dapat menggunakan kolasi ini di RDS apa pun untuk basis data PostgreSQL.
Dalam tabel berikut, ada kolasi yang tersedia di RDS for PostgreSQL yang memetakan halaman kode EBCDIC ke titik kode Unicode. Kami menyarankan Anda menggunakan kolasi dalam tabel ini untuk pengembangan aplikasi yang memerlukan pengurutan berdasarkan urutan halaman kode IBM.
Nama kolasi PostgreSQL | Deskripsi pemetaan halaman kode dan pengurutan urutan |
---|---|
da-DK-cp277-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 277 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 277 |
de-DE-cp273-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 273 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 273 |
en-GB-cp285-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 285 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 285 |
en-US-cp037-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 037 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 37 |
es-ES-cp284-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 284 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 284 |
fi-FI-cp278-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 278 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 278 |
fr-FR-cp297-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 297 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 297 |
it-IT-cp280-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 280 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 280 |
nl-BE-cp500-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 500 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 500 |
Amazon RDS menyediakan satu set kolasi tambahan yang mengurutkan titik kode Unicode yang memetakan ke karakter LATIN9 menggunakan tabel yang diterbitkan oleh IBM, dalam urutan titik kode asli sesuai dengan halaman kode EBCDIC dari data sumber.
Nama kolasi PostgreSQL | Deskripsi pemetaan halaman kode dan pengurutan urutan |
---|---|
da-DK-cp1142m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1142 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1142 |
de-DE-cp1141m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1141 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1141 |
en-GB-cp1146m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1146 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1146 |
en-US-cp1140m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1140 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1140 |
es-ES-cp1145m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1145 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1145 |
fi-FI-cp1143m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1143 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1143 |
fr-FR-cp1147m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1147 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1147 |
it-IT-cp1144m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1144 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1144 |
nl-BE-cp1148m-x-icu | Karakter Unicode yang memetakan ke karakter LATIN9 yang awalnya dikonversi dari Kode EBCDIC IBM Halaman 1148 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 1148 |
Berikut ini, Anda dapat menemukan contoh penggunaan RDS untuk kolasi PostgreSQL.
db1=>
SELECT pg_import_system_collations('pg_catalog');pg_import_system_collations ----------------------------- 36
db1=>
SELECT '¤' < 'a' col1;col1 ------ t
db1=>
SELECT '¤' < 'a' COLLATE "da-DK-cp277-x-icu" col1;col1 ------ f
Kami menyarankan Anda menggunakan kolasi di Unicode to EBCDIC collations table dan di Unicode to LATIN9 collations table untuk pengembangan aplikasi yang memerlukan pengurutan berdasarkan urutan halaman kode IBM. Kolasi berikut (akhiran dengan huruf “b”) juga terlihat di pg_collation
, tetapi dimaksudkan untuk digunakan oleh integrasi data mainframe dan alat migrasi di AWS yang memetakan halaman kode dengan pergeseran titik kode tertentu dan memerlukan penanganan khusus dalam kolasi. Dengan kata lain, penggunaan kolasi berikut tidak direkomendasikan.
da-DK-cp277b-x-icu
da-DK-1142b-x-icu
de-DE-cp273b-x-icu
de-DE-cp1141b-x-icu
en-GB-cp1146b-x-icu
en-GB-cp285b-x-icu
en-US-cp037b-x-icu
en-US-cp1140b-x-icu
es-ES-cp1145b-x-icu
es-ES-cp284b-x-icu
fi-FI-cp1143b-x-icu
fr-FR-cp1147b-x-icu
fr-FR-cp297b-x-icu
it-IT-cp1144b-x-icu
it-IT-cp280b-x-icu
nl-BE-cp1148b-x-icu
nl-BE-cp500b-x-icu
Untuk mempelajari lebih lanjut tentang memigrasi aplikasi dari lingkungan mainframe ke AWS, lihat Apa itu AWS Mainframe Modernization?.
Untuk mempelajari selengkapnya tentang mengelola kolasi di PostgreSQL, lihat Collation Support