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 klaster yang disediakan dengan cluster Aurora Serverless v1
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 menggunakan Aurora Serverless v2 atau menyediakan kelas instance seperti atau. db.r6g db.r6i
Bagian berikut menjelaskan perbedaan Amazon RDS Data API antara Aurora Serverless v2 dan kluster DB yang disediakan, dan kluster DB. Aurora Serverless v1 Aurora Serverless v1 Cluster DB menggunakan mode serverless mesin. Cluster DB yang disediakan menggunakan mode mesin. provisioned Cluster Aurora Serverless v2 DB juga menggunakan mode provisioned engine, dan berisi satu atau lebih instance Aurora Serverless v2 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
ModifyClusteroperasi dan tentukanTrueatauFalse, sebagaimana berlaku, untukEnableHttpEndpointparameter. -
Dengan AWS CLI — Gunakan
modify-db-clusteroperasi dengan--no-enable-http-endpointopsi--enable-http-endpointatau, sebagaimana berlaku.
Aurora Serverless v2
-
Dengan Amazon RDS API — Gunakan
EnableHttpEndpointdanDisableHttpEndpointoperasi. -
Dengan:Gunakan dan AWS CLI
enable-http-endpointoperasi.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 v1hanya).
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 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
ExecuteSQLOperasi ini tidak digunakan lagi.
Aurora Serverless v2
ExecuteSQLOperasi tidak didukung.
ExecuteStatement perilaku
Untuk informasi selengkapnya tentang ExecuteStatement, lihat ExecuteStatement.
Aurora Serverless v1
ExecuteStatementParameter mendukung pengambilan kolom array multidimensi dan semua tipe data lanjutan.
Aurora Serverless v2
ExecuteStatementParameter 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
SchemaParamater tidak didukung. Saat Anda menyertakan Schema parameter dalam panggilan API, API Data akan mengabaikan parameter tersebut.
Aurora Serverless v2
SchemaParameter 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"