其实我有点晕 发表于 2013-01-26 08:24

Sybase怎么检查索引的问题?

数据库里有几张表,数据只有几十行,用sp_spaceused查看的时候,索引居然有六七百兆,导致数据库性能严重下降,前台网页基本上打不开。用dbcc checktable和dbcc tablealloc检查过,并没有报错。重建索引后恢复正常。
想请问一下,像这样的问题,用什么命令能检查出来呢?数据库版本是12.5.3 / EBF12876。谢谢!

fishcoder 发表于 2013-01-26 21:48

这张表的增删改多么?

其实我有点晕 发表于 2013-01-26 22:18

回复 2# fishcoder


    用的倒是挺频繁的

fishcoder 发表于 2013-01-26 22:35

回复 3# 其实我有点晕


    如果频率很大的话,那应该就是这个问题了

    分三种情况:
    1、 insert 添加在一定程度上可以导致B树page的分裂,从而使索引的大小变大

    2. update: 如果更新索引相关的column,那么首先是删除原来那个key,然后再添加(mysql的实现,我觉得 sybase应该也差不多:-))

    3. delete:sybase 默认在删除的时候不会清理索引页中的key的,因此在索引中会存在很多没有用的key

   处理方法呢,你可以试试 rebuild index,我记得是会加sh-table的锁,这个不确定
   是在不行,可以先把index drop掉,完了再创建么,反正表很小,写个脚本在半夜2点做就可以了

其实我有点晕 发表于 2013-01-26 22:39

回复 4# fishcoder


    谢谢指点。我那个系统倒不是很重要的,随时都可以做的:)

其实我有点晕 发表于 2013-01-28 19:20

回复 4# fishcoder


    谢谢,找到问题了。之前一直没太注意,这些表用的是行锁。定期做reorg rebuild就好了。
页: [1]
查看完整版本: Sybase怎么检查索引的问题?