Max row size for Sybase

转自 adam3342 的博客  原文链接 http://blog.csdn.net/adam3342/article/details/6875190


数据库有max row sizex限制, 它的大小取决于 max page size, 而后者是在创建DB Server时指定的,它是Server-wide的,作用于DB Server下的所有数据库。 就Sybase 数据库而言, max row size 是1962byte, 而 max page size 是2048byte, 在Sybase version12 之前,max page size 只有2048byte 一种选择,而之后有了:2048    4096    8192    16384 四种选择,可以在创建DB Server 时指定,也可以之后通过Sybase Central 工具修改, 重启DB Server后生效, 而默认的为2048。 具体page size 与row size关系如下。

Table 8-4: Maximum sizefor variable-length columns in an APL table

Page size

Maximum row length

Maximum column length

2K (2048 bytes)

1962

1948

4K (4096 bytes)

4010

3988

8K (8192 bytes)

8096

8058

16K (16384 bytes)

16298

16228

需要注意的是,当更新表时(update/insert),如果所有字段的值的长度大于了max row size, 执行就会失败,且向前端抛异常如下:

com.sybase.jdbc2.jdbc.SybSQLException: Attempt to update or insert row failed because resultant row of size 2864 bytes is larger than the maximum size (1962 bytes) allowed for this table.

事实上,在创建存储过程时已有警告:

Warnings: --->

   W (1): Warning: Rowsize (2624 bytes) could exceed row size limit, which is 1962 bytes.

          <--- 

所以,如果遇到此警告,为避免今后数据库操作存在潜在问题,可以larger max page size或者优化sql 语句或表的结构,避免row size 大于 max row size。

更多的资料可以参考官方文档:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20020_1251/html/databases/databases255.htm


此外,Sql Server数据库的max page size 要大些:8060byte。


"row size too large"是MySQL数据库中的一个错误信息,表示行大小超过了MySQL的页面大小限制。这个错误通常发生在以下情况下: 1. 表中的某些列的数据量太大,导致行的总大小超过了MySQL的页面大小限制。 2. 表的ROW_FORMAT格式设置不正确,导致行的总大小超过了MySQL的页面大小限制。 解决这个问题的方法有几种: 1. 修改表结构中的某些列的数据类型,将其改为TEXT或BLOB类型。这样可以将大容量的数据存储在单独的页中,而不是存储在行中。可以使用以下语句修改表结构:ALTER TABLE table_name MODIFY column_name TEXT; 2. 更改表的ROW_FORMAT格式为DYNAMIC或COMPRESSED。这样可以压缩数据,减少行的总大小。可以使用以下语句更改ROW_FORMAT格式:ALTER TABLE table_name ROW_FORMAT=DYNAMIC; 3. 如果需要插入大量数据,建议使用LOAD DATA INFILE语句,该语句可以更有效地处理大量数据的导入。 请注意,在进行任何更改之前,请备份数据库以免数据丢失,并在修改后对修改进行测试以确保没有其他问题发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Mysql的问题 Row size too large](https://blog.csdn.net/u010339879/article/details/122050349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.](https://blog.csdn.net/qq_36433289/article/details/130581600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值