Membandingkan perilaku Amazon RDS Data API untuk Aurora Serverless v2 dan kluster yang disediakan dengan Aurora Serverless v1 kluster - Amazon Aurora

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 tentukan True atauFalse, sebagaimana berlaku, untuk EnableHttpEndpoint 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 dan DisableHttpEndpoint operasi.

  • Dengan:Gunakan dan AWS CLIenable-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

ExecuteSQLOperasi ini tidak digunakan lagi.

Aurora Serverless v2

ExecuteSQLOperasi tidak didukung.

ExecuteStatement perilaku

Untuk informasi selengkapnya tentang ExecuteStatement, lihat ExecuteStatement.

Aurora Serverless v1

ExecuteStatementParameter ini 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"