Chinaunix

标题: Sybase怎么检查索引的问题? [打印本页]

作者: 其实我有点晕    时间: 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就好了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2