Amazon Redshift把SUPER字符串上限从65,535字节提到1600万字节:需先通过参数选择启用,预置集群要重启,表中VARCHAR(MAX)列不变,设置后不能恢复默认
2026年11月6日,AWS宣布Amazon Redshift的SUPER数据类型可存储最长1600万字节的单个字符串,此前上限是65,535字节,在所有提供Redshift的AWS区域(含GovCloud)可用。必须先把参数enable_large_strings_opt_in设为Yes;预置集群需重启,Serverless在工作组上设置,设为Yes或No后不能重置为默认值。文档说明表中VARCHAR(MAX)列仍是VARCHAR(65535),大尺寸只用于SUPER值和内存中的运算。公告和文档没有性能数字;所审材料未说明价格影响,需另查定价。
2026年11月6日,AWS宣布Amazon Redshift现在可以在SUPER数据类型中存储最长1600万字节的单个字符串,此前上限是65,535字节。它适用于从JSON、PARQUET、TEXT和CSV文件加载的数据,以及抽取、加载和转换(ELT)作业产生的数据。AWS称,在Redshift所在的每个AWS区域都可用,包括AWS GovCloud(美国)区域。关键条件在公告的第一段里:必须通过数据库参数选择启用。不启用,什么都不会变。
用途是以前必须先拆分或截断才能加载的半结构化数据。AWS点名了条款和合同这类很长的文档,配套博客又补充了详细的商品目录、完整的应用日志和客户互动历史。这类数据进入Redshift后,可以用SQL查询,用PartiQL语言探索,用字符串函数转换。AWS称,JSON_PARSE、CONCAT和LISTAGG等函数现在可以接收最长1600万字节的输入字符串,并返回同样长度的输出字符串。
Redshift文档说明了启用后做什么、限制到哪里。参数是enable_large_strings_opt_in,取值为Yes、No或未设置,未设置时保持集群的现有行为。设为Yes时,SUPER中的单个字符串可达16,000,000字节,内存中的字符串函数可以处理这种大小的VARCHAR值,在CAST表达式、视图、用户定义函数和存储过程等表达式语境里,VARCHAR(MAX)解析为VARCHAR(16000000)。它不会加宽存储的列:用VARCHAR(MAX)执行CREATE TABLE,创建的仍是VARCHAR(65535)列。所以大尺寸存在于SUPER值和内存里,而不在普通VARCHAR列里。 这要求patch 206或更新版本。启用前创建的视图、UDF和存储过程仍受65,535字节上限约束,需重新创建;普通VARCHAR列仍不扩宽,旧SUPER对象的16 MB上限与本次单个字符串16,000,000字节上限是不同边界。
在有人打开它之前,有几个操作细节很重要。预置(provisioned)集群必须重启才能应用该参数,而Amazon Redshift Serverless改为在工作组上设置一个配置参数,不使用参数组。把参数设为Yes或No之后,就不能再重置为默认值,通过ResetClusterParameterGroup重置也会保留原值。命令`SELECT is_large_string_enabled();`可以查看当前状态。配套博客的示例用COPY加载大JSON文档,使用`FORMAT JSON 'noshred'`选项,让每个文档保持为一个SUPER值。博客把三项增强放在一起:大字符串、无截断的内存字符串运算,以及SUPER在不区分大小写数据库中的支持,并配有针对驼峰属性名的`enable_case_sensitive_super_attribute`设置。我们没有运行其中任何一项。 数据共享的生产者与消费者仓库必须采用一致的enable_large_strings_opt_in设置;不能重置为未设置默认值,并不等于不能明确设为No。
公告和文档没有给出接近1600万字节字符串的加载时间、内存占用或查询延迟,所审材料也未说明价格影响,需另查定价。博客提到以往磁盘溢写影响性能,却未展示测量。客户端工具、驱动和导出作业处理极大值的具体兼容性未实测,需按工具验证;已有视图、UDF、存储过程及数据共享设置的限制则已由博客明确说明。
背景说明:SUPER是Redshift用来存放半结构化数据(如JSON)的数据类型,可以把整个文档放进一列,再用PartiQL查询。以前单个字符串超过65,535字节时,通常只能截断,或者在加载前先把文档拆开,这会让数据管道变复杂,也可能丢失信息。ELT指先把数据加载进仓库,再在仓库里转换。预置集群是你自己指定节点规格的Redshift集群,Serverless则按用量自动伸缩,两者设置参数的方式不同,这就是公告里出现两种设置方式的原因。把一个参数设成不可回到默认值,意味着上线前最好先在副本上演练,而不是直接改生产。字符串变长也意味着单行数据变大,对复制、备份和结果传输可能增加负担,这是我们的推断,来源没有谈到。对数据工程师来说,实际要做的是三件事:弄清哪些表和流水线真的有超过65,535字节的字符串,决定在哪个维护窗口重启预置集群,并确认下游的BI工具、导出作业和驱动程序是否能处理这么长的值。还要注意,公告所说的“所有区域可用”只表示功能存在,并不表示你的集群已经开启;已有集群的行为在设置参数之前不会改变,这既是保护,也意味着团队需要有人负责去打开、验证并记录这个设置。
我们的判断:这是一个有用而狭窄的改动,为在SUPER里保存大JSON文档的人去掉了一个硬限制,选择启用的设计保护了现有负载。同时,选了Yes或No之后就回不到未设置的默认状态,而且它不改变表定义。团队应先在非生产集群上试用,把重启窗口算进去,确认客户端工具和下游查询能应付很大的值,然后再决定是否在生产上设置该参数。
Sources
FAQ
这个功能默认就是开着的吗?
不是。必须把enable_large_strings_opt_in设为Yes。预置集群需重启,Serverless在工作组上设置配置参数。未设置时保持旧行为,上限仍是65,535字节。文档说,设为Yes或No后就不能重置为默认值。
表里的列会变大吗?
不会。普通VARCHAR(MAX)列仍限65,535字节;单个SUPER字符串和表达式可达16,000,000字节,需patch 206以上。原有视图、UDF、存储过程须重建,否则仍限65,535字节。SUPER对象整体16 MB是另一上限。
哪些信息还不知道?
性能和价格。所审材料没给接近1600万字节的加载时间、内存或查询延迟,也未说明价格影响,需另查定价。客户端工具、驱动和导出作业处理极大值的具体兼容性未实测,需按工具验证;已有视图、UDF、存储过程及数据共享设置的限制则已由博客明确说明。