求个关于导资料库的问题。。。在线等
想用load出来的数据对库的某个表进行资料导入,表有60多万行。在导入的时候报错 说锁不够,看了下onconfig 文件 锁设定的是 LOCKS 1000000
然后在select count(*)的时候发现只导入了499999 数据
然后我查看了表的锁是row.后来改成了page就不存在这个问题了。。。可以将数据全部导入
我想问问这个row锁与page锁 到底有什么不一样啊?
还有就是为什么我导入的数据只有499999 没有超过500000,难道这个500000是1000000/2得到的 ????
希望哪位朋友指点下! 没回滚?~?:em14: :em14: 谢谢楼上的大侠
什么回滚?很奇怪的是我导入50万一下的表的时候用row锁都可以导入。。只要超过50万就不行
回复 #3 hakajawa 的帖子
:em17: :em17: 你的数据库是什么版本的?~?:em17: Informix还有这种限制, 晕, 呵呵. 假设你的表名称为table_name,按照如下操作,只占用几个锁,不会出现锁不够用的情况:begin work;
lock table table_name in exclusive mode;
load from table.txt insert into table_name;
commit work; 原帖由 liaosnet 于 2008-11-18 00:34 发表 http://bbs3.chinaunix.net/images/common/back.gif
:em17: :em17: 你的数据库是什么版本的?~?:em17:
9.4的。。。
今天还有更奇怪的是我想扩大locks数量。。。设定为200万没问题。。但三百万就报错初始化内存失败。。。我看了online.log里面显示基址被占用(设定200万的时候不存在)
我看了我分配的内存。。
机器是8G内存
# Shared Memory Parameters
LOCKS 2000000 # Maximum number of locks
BUFFERS 1024000 # Maximum number of shared buffers
NUMAIOVPS 5 # Number of IO vps
PHYSBUFF 64 # Physical log buffer size (Kbytes)
LOGBUFF 196 # Logical log buffer size (Kbytes)
LOGSMAX 120 # Maximum number of logical log files
CLEANERS 8 # Number of buffer cleaner processes
SHMBASE 0x44000000L # Shared memory base address
SHMVIRTSIZE 1024000 # initial virtual shared memory segment size
SHMADD 128000 # Size of new shared memory segments (Kbytes)
SHMTOTAL 0 # Total shared memory (Kbytes). 0=>;unlimited
CKPTINTVL 300 # Check point interval (in sec)
LRUS 8 # Number of LRU queues
LRU_MAX_DIRTY 70 # LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY 60 # LRU percent dirty end cleaning limit
LTXHWM 50 # Long transaction high water mark percentage
LTXEHWM 60 # Long transaction high water mark (exclusive)
TXTIMEOUT 0x12c # Transaction timeout (in sec)
STACKSIZE 32 # Stack size (Kbytes)
[ 本帖最后由 hakajawa 于 2008-11-18 19:10 编辑 ] 原帖由 xxyyy 于 2008-11-18 08:46 发表 http://bbs3.chinaunix.net/images/common/back.gif
假设你的表名称为table_name,按照如下操作,只占用几个锁,不会出现锁不够用的情况:
begin work;
lock table table_name in exclusive mode;
load from table.txt insert into table_name;
commit work;
谢谢这个兄台。。。这个方法肯定行。。因为我把表的lock mode改为page都可以。。 如果使用行级锁,每插入一条就占用至少一把锁,如果你使用页级锁,只是在插入的页面上加至少1把锁,最多2把锁;这就是你使用页级锁可以成功的原因。
三百万就报错初始化内存失败,可能的原因是你需要增加操作系统的shmmax参数(在sun/hp/sco上,aix是动态内核),和informix没有关系的; 又学习了。
页:
[1]