Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membandingkan perilaku Amazon RDS Data API untuk Aurora Serverless v2 dan kluster yang disediakan dengan Aurora Serverless v1 kluster
Peningkatan terbaru untuk Amazon RDS Data APIs membuat Data APIs tersedia untuk cluster yang menggunakan versi terbaru dari PostgreSQL atau mesin MySQL. Cluster ini dapat dikonfigurasi untuk digunakan Aurora Serverless v2 atau kelas instance yang disediakan seperti db.r6g
atau. db.r6i
Bagian berikut menjelaskan perbedaan Amazon RDS Data API antara Aurora Serverless v2 dan kluster DB yang disediakan, dan Aurora Serverless v1 klaster DB. Aurora Serverless v1 Cluster DB menggunakan mode serverless
mesin. Cluster DB yang disediakan menggunakan mode mesin. provisioned
Sesi Aurora Serverless v2 Cluster DB juga menggunakan mode provisioned
mesin, dan berisi satu atau lebih Aurora Serverless v2 Instance DB dengan kelas db.serverless
instance.
Jumlah maksimum permintaan per detik
Aurora Serverless v1
Data APIs dapat membuat hingga 1.000 permintaan per detik.
Aurora Serverless v2
Data APIs dapat membuat jumlah permintaan per detik yang tidak terbatas.
Mengaktifkan atau menonaktifkan Amazon RDS Data API pada database yang ada
Aurora Serverless v1
-
Dengan Amazon RDS API — Gunakan
ModifyCluster
operasi dan tentukanTrue
atauFalse
, sebagaimana berlaku, untukEnableHttpEndpoint
parameter. -
Dengan AWS CLI — Gunakan
modify-db-cluster
operasi dengan--no-enable-http-endpoint
opsi--enable-http-endpoint
atau, sebagaimana berlaku.
Aurora Serverless v2
-
Dengan Amazon RDS API — Gunakan
EnableHttpEndpoint
danDisableHttpEndpoint
operasi. -
Dengan:Gunakan dan AWS CLI
enable-http-endpoint
operasi.disable-http-endpoint
CloudTrail acara
Aurora Serverless v1
Peristiwa dari panggilan API Data adalah peristiwa manajemen. Peristiwa ini secara otomatis disertakan dalam jejak secara default. Untuk informasi selengkapnya, lihat Mengecualikan peristiwa Data API dari AWS CloudTrail jejak (Aurora Serverless v1 hanya).
Aurora Serverless v2
Peristiwa dari panggilan API Data adalah peristiwa data. Peristiwa ini secara otomatis dikecualikan dalam jejak secara default. Untuk informasi selengkapnya, lihat Menyertakan peristiwa API Data dalam suatu AWS CloudTrail jejak.
Dukungan multistatement
Aurora Serverless v1
-
Untuk Aurora MySQL, multistatement tidak didukung.
-
Untuk Aurora PostgreSQL, multistatement hanya mengembalikan respons kueri pertama.
Aurora Serverless v2
Multistatement tidak didukung. Mencoba mengeksekusi beberapa pernyataan dalam satu panggilan API kembali“An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.”
. Untuk mengeksekusi beberapa pernyataan, buat panggilan ExecuteStatement
API terpisah atau gunakan BatchExecuteStatement
untuk pemrosesan batch.
Contoh berikut menunjukkan pesan kesalahan yang dihasilkan dari panggilan API yang mencoba mengeksekusi multistatement.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table; Select * FROM next_table; "An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.
Contoh berikut mengeksekusi beberapa pernyataan dengan panggilan ExecuteStatement
API terpisah.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table;" aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM next_table;"
Permintaan bersamaan untuk ID transaksi yang sama
Aurora Serverless v1
Permintaan selanjutnya menunggu hingga permintaan saat ini selesai. Aplikasi Anda perlu menangani kesalahan batas waktu jika masa tunggu terlalu lama.
Aurora Serverless v2
Ketika Data API menerima beberapa permintaan dengan ID transaksi yang sama, ia segera mengembalikan kesalahan ini:
DatabaseErrorException: Transaction is still running a query
Kesalahan ini terjadi dalam dua situasi:
-
Aplikasi Anda membuat permintaan asinkron (seperti JavaScript janji) menggunakan ID transaksi yang sama.
-
Permintaan sebelumnya dengan ID transaksi tersebut masih diproses.
Contoh berikut menunjukkan semua permintaan dieksekusi secara paralel denganpromise.all()
.
const api_calls = []; for (let i = 0; i < 10; i++) { api_calls.push( client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ) ); } await Promise.all(api_calls);
Untuk mengatasi kesalahan ini, tunggu hingga permintaan saat ini selesai sebelum mengirim permintaan lain dengan ID transaksi yang sama atau hapus ID transaksi untuk mengizinkan permintaan paralel.
Contoh berikut menunjukkan panggilan API yang menggunakan eksekusi sekuensial dengan ID transaksi yang sama.
for (let i = 0; i < 10; i++) { await client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ).promise() ); }
BatchExecuteStatement perilaku
Untuk informasi selengkapnya tentang BatchExecuteStatement
, lihat BatchExecuteStatement.
Aurora Serverless v1
Objek bidang yang dihasilkan dalam hasil pembaruan mencakup nilai yang disisipkan.
Aurora Serverless v2
-
Untuk Aurora MySQL, objek bidang yang dihasilkan dalam hasil pembaruan mencakup nilai yang disisipkan.
-
Untuk Aurora PostgreSQL, objek bidang yang dihasilkan kosong.
Eksekusi perilaku QL
Untuk informasi selengkapnyaExecuteSQL
, lihat ExecuteSQL.
Aurora Serverless v1
ExecuteSQL
Operasi ini tidak digunakan lagi.
Aurora Serverless v2
ExecuteSQL
Operasi tidak didukung.
ExecuteStatement perilaku
Untuk informasi selengkapnya tentang ExecuteStatement
, lihat ExecuteStatement.
Aurora Serverless v1
ExecuteStatement
Parameter ini mendukung pengambilan kolom array multidimensi dan semua tipe data lanjutan.
Aurora Serverless v2
ExecuteStatement
Parameter tidak mendukung kolom array multidimensi. Ini juga tidak mendukung tipe data PostgreSQL tertentu, termasuk tipe geometris dan moneter. Ketika API Data menemukan tipe data yang tidak didukung, ia mengembalikan kesalahan ini—. UnsupportedResultException: The result contains the unsupported data type data_type
Untuk mengatasi masalah ini, kirimkan tipe data yang tidak didukung keTEXT
. Contoh berikut melemparkan tipe data yang tidak didukung ke. TEXT
SELECT custom_type::TEXT FROM my_table;-- ORSELECT CAST(custom_type AS TEXT) FROM my_table;
Untuk daftar tipe data yang didukung untuk setiap mesin database Aurora, lihat Referensi operasi API Data.
Perilaku parameter skema
Aurora Serverless v1
Schema
Paramater tidak didukung. Saat Anda menyertakan Schema
parameter dalam panggilan API, API Data akan mengabaikan parameter tersebut.
Aurora Serverless v2
Schema
Parameter tidak digunakan lagi. Saat Anda menyertakan Schema
parameter dalam panggilan API, API Data mengembalikan kesalahan ini—ValidationException: The schema parameter isn't supported
. Contoh berikut menunjukkan panggilan Data API yang mengembalikan ValidationException
kesalahan.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --schema "your_schema" \ --sql "SELECT * FROM your_table LIMIT 10"
Untuk mengatasi masalah ini, hapus Schema
parameter dari panggilan API Anda.
Contoh berikut menunjukkan panggilan Data API dengan Schema
parameter dihapus.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table LIMIT 10"