Sybase怎么检查索引的问题?
数据库里有几张表,数据只有几十行,用sp_spaceused查看的时候,索引居然有六七百兆,导致数据库性能严重下降,前台网页基本上打不开。用dbcc checktable和dbcc tablealloc检查过,并没有报错。重建索引后恢复正常。想请问一下,像这样的问题,用什么命令能检查出来呢?数据库版本是12.5.3 / EBF12876。谢谢! 这张表的增删改多么? 回复 2# fishcoder
用的倒是挺频繁的 回复 3# 其实我有点晕
如果频率很大的话,那应该就是这个问题了
分三种情况:
1、 insert 添加在一定程度上可以导致B树page的分裂,从而使索引的大小变大
2. update: 如果更新索引相关的column,那么首先是删除原来那个key,然后再添加(mysql的实现,我觉得 sybase应该也差不多:-))
3. delete:sybase 默认在删除的时候不会清理索引页中的key的,因此在索引中会存在很多没有用的key
处理方法呢,你可以试试 rebuild index,我记得是会加sh-table的锁,这个不确定
是在不行,可以先把index drop掉,完了再创建么,反正表很小,写个脚本在半夜2点做就可以了 回复 4# fishcoder
谢谢指点。我那个系统倒不是很重要的,随时都可以做的:) 回复 4# fishcoder
谢谢,找到问题了。之前一直没太注意,这些表用的是行锁。定期做reorg rebuild就好了。
页:
[1]