这可以在 Hsqldb 中设置最大行大小吗?
Posted
技术标签:
【中文标题】这可以在 Hsqldb 中设置最大行大小吗?【英文标题】:Is this possible to set the max row size in Hsqldb? 【发布时间】:2017-08-16 20:02:36 【问题描述】:在 SQL Server 2016 中,limit is 8060。我想在 Hsqldb 中定义相同的值。
原因是我们的大查询由使用从 Hibernate 获取的大量 EAGER 的应用程序生成(我知道这是不好的做法)。这会导致查询包含来自不同连接表的大量行。
查看Hsqldb documentation,找到了一个方法getMaxRowSize
,但是好像不能定义值:
HSQLDB 不施加“已知”限制。限制以记忆为准 和磁盘可用性;此方法总是返回 0。
这对我来说不是很好。但我在想这是否可以通过其他方式或通过“隐藏”功能实现。
【问题讨论】:
为什么不将 ddl 中所有列的总和保持在所需限制以下? 我要解决的问题是:在大(非常大)查询中,SQL Server 向我显示错误Cannot create a row of size 8575 which is greater than the allowable maximum row size of 8060.
。当我在 Hsqldb 中运行相同的查询时,不会发生相同类型的错误。所以我试图在两个数据库中设置相同的限制
只是为了我的理解:为什么需要在 hsqldb 上模拟这个问题?
应用程序在生产/同源/测试环境中使用SQL Server,Hsqldb用于开发和集成/功能测试。如果测试能出这种问题就好了。
好的,我明白了。我无法回答您的问题,但您可以考虑使用单独的开发人员数据库、开发人员版本甚至文档图像形式的“真实”SQL 服务器:blogs.msdn.microsoft.com/sqlserverstorageengine/2017/02/21/…
【参考方案1】:
您最好的选择是对每个字符或二进制列设置限制,以确保行的总数不超过 SQL Server 的最大行大小。 SQL Server 和 HSQLDB 都强制执行这些限制。
【讨论】:
嗨!我更新了我的问题以提供更多信息。当您使用来自不同联接表的大量列进行大型查询时,此限制会有所帮助。在我们的场景中,限制单个表中的列无济于事。以上是关于这可以在 Hsqldb 中设置最大行大小吗?的主要内容,如果未能解决你的问题,请参考以下文章