postgresql - Amazon aurora postgres serverless:数据库返回超过允许的响应大小限制
问题描述
我们正在探索 aurora serverless 作为我们项目之一的数据库存储。在执行 POC 以从极光无服务器集群获取事件时,我们收到“数据库返回超过允许的响应大小限制”异常。
- 有没有内置的解决方案?aurora serverless 中是否有类似 dynamoDB 的 token 机制?
- 快速获取 50,000 是我们的关键要求之一。我们应该使用 aurora 还是 aurora serverless?
有关数据库的更多详细信息:Aurora PostgreSQL server less。
为了进行 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);
解决方案
当您通过数据 API 在任何 Aurora Serverless 实例中执行查询时,您有两个大小限制:
目前,Data API 中没有解决这些限制的解决方案。在Amazon Aurora User Guide中,第 164 页中的第二个问题有一个推荐的解决方案:
在这种情况下,数据库返回的结果集的大小太大了。数据库返回的结果集中的数据 API 限制为 1 MB。要解决此问题,请确保对数据 API 的调用返回 1 MB 或更少的数据。如果您需要返回超过 1 MB 的数据,您可以在查询中使用多个带有 LIMIT 子句的 ExecuteStatement 调用。
考虑到这一点,您可以进行指数退避,直到为您的结果集找到一个可接受的 LIMIT,或者设置一个固定的 LIMIT,让您觉得它始终低于 1 MB,即使您的行大小将来会增加。
在定义了如何设置 LIMIT 子句值之后(取决于您的集群是使用MySQL 5.6、MySQL 5.7还是PostgreSQL 10.7),您可以执行 COUNT 查询以了解您将获得多少结果,然后迭代直到执行COUNT / LIMIT
语句。另一种选择是迭代,直到您的语句响应的行数少于您的 LIMIT。
推荐阅读
- postgresql - 使用 sqoop 从 postgres 导入数据到 hive
- javascript - 获取 promise 的最终返回值
- html - 如何在每个弹性框的底部添加文本
- react-native - 更改手机方向时闪烁(纵向到横向)-MaterialTopTab
- python - 用音乐会 python 创建一个类
- r - 如何在R中的气泡图(元包)中为列类别分配颜色
- c++ - 我们可以在 CPP 中实现金属框架吗
- python - 如何修复窗口 8 中 Visual Studio 代码中的导入错误?
- excel - Chrome xls 文件类型为空字符串
- privacy - iOS 14 PHAsset fetchAssetsWithMediaType 选择更多