求助:SQL Anywhere 8 8.0.3.5594数据库最大行数是多少?

tomorrower 2012-07-13 10:41:19
我用SQL Anywhere 8 8.0.3.5594 数据库,使用页大小是9281字节(8k)
现在表中插入了很多数据,目前记录是99999999条(一亿差一条)
再保存数据的时候报错:
SQLSTATE = 22003
[Sybase][ODBC Driver][Adaptive Server Anywhere]数字值超出范围: 值 100000000 超出了目标的范围

No changes made to database.

INSERT INTO "t_hlcm_gzgc_yssj" ( "dq", "bcpd", "rq", "sjd", "ssl", "mblx" ) VALUES ( ?, ?, ?, ?, ?, ? )

请问,这个是表的最大行数了吗?

此时我的数据库文件大小是8G(windowXP NTFS格式)
查看了syabase的参考手册,说明表的行数是 "每个数据库的行数 受文件大小的限制 "

求助
...全文
360 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomorrower 2012-07-15
  • 打赏
  • 举报
回复
谢谢,我的问题彻底解决
iihero 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

感谢iihero
是你提醒了我,我的字段lsh(流水号)是numeric类型(且自增长),我定义为8为长度的,这个导致了不能超过一亿

但是我字段是8位的,作为主键,我修改表定义扩展到10位,却提示我:
-127.

SQLSTATE = S1000
[Sybase][ODBC Driver][Adaptive Server Anywhere]一般错误:……
[/Quote]
先drop index或者primary key,
再更改列定义,
再加index.

tomorrower 2012-07-15
  • 打赏
  • 举报
回复
感谢iihero
是你提醒了我,我的字段lsh(流水号)是numeric类型(且自增长),我定义为8为长度的,这个导致了不能超过一亿

但是我字段是8位的,作为主键,我修改表定义扩展到10位,却提示我:
-127.

SQLSTATE = S1000
[Sybase][ODBC Driver][Adaptive Server Anywhere]一般错误: 不能变更索引中的列

tomorrower 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

数字值超出范围: 值 100000000 超出了目标的范围?
你表的定义是什么?
是不是某一个字段的定义,有精度限制。
仔细检查一下表的定义先。不太像是行数超出了限制。
[/Quote]

我的表定义导出为:
CREATE TABLE "dba"."t_hlcm_gzgc_yssj" ("lsh" ????? NOT NULL DEFAULT autoincrement, "dq" varchar(20) DEFAULT NULL, "bcpd" varchar(40) DEFAULT NULL, "rq" varchar(10) DEFAULT NULL, "sjd" varchar(20) DEFAULT NULL, "ssl" numeric(8,3) DEFAULT NULL, "mblx" varchar(16) DEFAULT NULL, "bz" char(1) DEFAULT NULL , PRIMARY KEY ("lsh")) ;
CREATE INDEX "dq_pd_rq_sjd" ON "dba"."t_hlcm_gzgc_yssj" ("dq" , "bcpd" , "rq" , "sjd" ) ;

我昨晚测试另外一个数据库,也是asa8.03的
导入1一亿条记录,执行也一个晚上,也只是保存了2千万条进去
iihero 2012-07-15
  • 打赏
  • 举报
回复
数字值超出范围: 值 100000000 超出了目标的范围?
你表的定义是什么?
是不是某一个字段的定义,有精度限制。
仔细检查一下表的定义先。不太像是行数超出了限制。
iihero 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
还有,借问一下;用以下语句扩展数据库文件大小,alter DBSPACE system ADD 200MB #将数据库文件扩容300M

如何能够缩小数据库文件大小呢?

即使删除了大量数据,数据库文件大小也不会改变
[/Quote]
性能下降,跟改变字段长度关系不大,应该是数据量上去了以后,性能下降的。

呵呵,是的,ASA的命令,基本上只能扩大空间大小。但是不能直接resize使其变小。要想真正变小,可能只能dbunload,再reload到新库当中了。
tomorrower 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 10 楼 的回复:

感谢iihero
是你提醒了我,我的字段lsh(流水号)是numeric类型(且自增长),我定义为8为长度的,这个导致了不能超过一亿

但是我字段是8位的,作为主键,我修改表定义扩展到10位,却提示我:
-127.

SQLSTATE = S1000
[Sybase][ODBC Driver][Adaptive Server Anywhere]一般……
[/Quote]

谢谢,这样可以了,但是造成了数据库性能大幅下降
我原来导入一个excel文件只要5分钟,现在却要半小时,操作就是删除主键,然后修改字段精度,然后再设置主键

还有,借问一下;用以下语句扩展数据库文件大小,alter DBSPACE system ADD 200MB #将数据库文件扩容300M

如何能够缩小数据库文件大小呢?

即使删除了大量数据,数据库文件大小也不会改变


iihero 2012-07-14
  • 打赏
  • 举报
回复
我刚做了一个测试,插入了100000000条记录,没任何问题。不过,我用的是ASA11.0
iihero 2012-07-14
  • 打赏
  • 举报
回复
NTFS格式应该没有8G的限制。
tomorrower 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

引用 3 楼 的回复:

我刚做了一个测试,插入了100000000条记录,没任何问题。不过,我用的是ASA11.0


我想知道的是,单表的行数,在8.0.3版本中,跟pagesize大小有无关系?

应该没什么关系。你完全可以自己做一个简单的测试的。
[/Quote]

我在测试,我试图在一个表中插入1一条记录,我的pb程序就停止反应了

能告诉我这个SQLSTATE = 22003 怎么解决吗?
iihero 2012-07-14
  • 打赏
  • 举报
回复
行大小是受文件大小的限制,单表中的行数受限于:4096 x 2^^28 = 2 ^^ 40,也就是1T行。
iihero 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:

我刚做了一个测试,插入了100000000条记录,没任何问题。不过,我用的是ASA11.0


我想知道的是,单表的行数,在8.0.3版本中,跟pagesize大小有无关系?
[/Quote]
应该没什么关系。你完全可以自己做一个简单的测试的。
tomorrower 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我刚做了一个测试,插入了100000000条记录,没任何问题。不过,我用的是ASA11.0
[/Quote]

我想知道的是,单表的行数,在8.0.3版本中,跟pagesize大小有无关系?
tomorrower 2012-07-14
  • 打赏
  • 举报
回复
我用的是8.0.3.5594

我的文件大小是可以增加的,用
alter DBSPACE system ADD 200MB #将数据库文件扩容300M

请问,现在我单表数据是插入不了了,有什么办法吗?

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧