请教高手,表未建索引,bcp in时却占用大量索引空间
bcp in数据时,目标表未建任何索引和触发器,在导入时报空间不足的错误提示,查看了数据库属性,在设备使用情况中,索引占用了特别大的空间,为什么会这样?如何解决?请各位高手帮忙解决,不胜感激! 索引占用了特别大的空间,这个表述不知道是否属实。总之,分配足够的空间,先将bcp in搞定再说。
按理说不应该占用这么大的空间。 不好意思,表述不大清cp楚,因为我的表数据挺大的,200W条,导出来3G多,
导入的时候在sybase central 里面查看数据的信息,见下图
图里面显示的类型为索引的,是index索引吗? 200w的数据就有3G,表里面有text或者image类型吧。
sybase中将大文本类型text或者image的空间计算到索引上去了。
通过看到你的数据段才使用了198M多,远远小于3G。则可以证明上述所说。
我不知道你的数据库配置的页面时多大的?
假如是2K吧。
针对于你的每一条记录,大约占用:1.5K (3G/200 万行)
也就是说每条记录的大文本内容需要至少占用一页的空间(1.5K比2k的页面要小,占用2页的可能性不大)
这样算起来,200万行的数据,就要占用4G多了吧。
如果你的页面配置的是4k呢?应该就8G多了吧?
这是理想状态下。
假如你的这个抓图是bcp in之后马上抓的,没有进行任何的reorg等维护操作。
我感觉还有个可能就是sybase在bcp in 的时候没有完全使用掉一个分区(extent)。因为在bcp in 的时候分配空间是以extent为单位(8个页面)。也就是说给分配的8个页面没有使用完全,那么这么多页面也会浪费掉很多吧!
所以显示出来的索引占用近11G不足为奇 ! 嗯 说的好!~ 谢谢,andkylee 说的很详细,学习到了。 我也正遇到这个问题 能跟我讲讲为什么吗 谢谢
页:
[1]