-

- 加为好友
- 发送私信
- 在线聊天
zjcxc
- 等级:

- 可用分等级:
- 总技术专家分:
- 总技术专家分排名:
-
|
| 发表于:2008-02-24 04:03:0319楼 得分:60 |
我的难题是:建有索引的表,每10多分钟就会产生15%-90%不等的索引碎片,这会导致WEB查询超时和写数据超时,不建索引又不行,因为在做UPDATE时,会先SELECT,然后做判断,有则UPDATE,无则INSERT。 ---------------------------------------------------------------------------------------------------------------- 如果这个是 UPDATE 造成的, 则一般在设计上应该做一些调整 从理论上来讲, UPDATE 导致索引碎片主要是由于被 UPDATE 的记录的索引页存储不下 UPDATE 的结果, 导致页拆分而产生碎片 因此, 除了如楼上所说, 应该适当降低索引的 FILLFACTOR 外 还应该考虑修改表结构, 为列预留空间 例如, 如果你的某个列存储的数据在 0-50 个字符之间, 从节约空间的角度来考虑, 一般设置会采用 varchar/nvarchar 但如果这个列被频繁更新, 则可能会经常导致页拆分(旧的数据比新的数据短) 在这种情况下, 应该考虑将列设置为 char/nchar, 这样空间是定长的, 无论新旧数据的实际长度如何, 它都是标准的 50 字符, 这样能够大大避免页拆分, 从而达到减少索引碎片的目的(在一定程度上对更新速度也有提高, 因为更新数据页的时候, 也同时避免了数据页的拆分) | | |
修改
删除
举报
引用
回复
| |