Shi*_*ary 8 postgresql aurora amazon-aurora aws-aurora-serverless
我们正在探索将 aurora serverless 作为我们项目之一的数据库存储。在执行 POC 以从 Aurora 无服务器集群中获取事件时,我们收到“返回的数据库超过允许的响应大小限制”异常。
有关数据库的更多详细信息:Aurora PostgreSQL 服务器较少。
为了进行 POC,我们正在使用数据 API,它们有这些限制。
import boto3;
client = boto3.client('rds-data')
import sys;
sql_statement = "select * from table_name limit 1000"
response = client.execute_statement(
database='mydb',
secretArn='<secret_arn',
resourceArn='<resource_arn>',
sql=sql_statement
)
print(response);
Run Code Online (Sandbox Code Playgroud)
当您通过数据 API 在任何 Aurora Serverless 实例中执行查询时,您有两个大小限制:
目前,Data API 中没有解决方案来克服这些限制。在Amazon Aurora 用户指南 中,对于 p.164 中的第二个问题有一个推荐的解决方案:
在这种情况下,数据库返回的结果集大小过大。数据库返回的结果集中的数据 API 限制为 1 MB。要解决此问题,请确保对数据 API 的调用返回 1 MB 或更少的数据。如果您需要返回超过 1 MB,您可以使用多个 ExecuteStatement 调用和查询中的 LIMIT 子句。
考虑到这一点,您可以进行指数退避,直到为结果集找到可接受的 LIMIT,或者设置一个固定的 LIMIT,您认为它始终低于 1 MB,即使将来您的行大小增加。
在定义了如何设置 LIMIT 子句值(取决于您的集群是使用MySQL 5.6、MySQL 5.7还是PostgreSQL 10.7)之后,您可以执行 COUNT 查询以了解您将获得多少结果,然后迭代直到您执行COUNT / LIMIT语句。另一种选择是迭代,直到您的语句响应的行数少于您的 LIMIT。
| 归档时间: |
|
| 查看次数: |
2384 次 |
| 最近记录: |