• SqlServer插入慢的问题解决


    这个是我加入的QQ群里面一个网友问的问题。他说一个表做一个INSERT都会超时。正困惑呢,向群里面的人求助。我刚好对这方面知道点,就回答了说要优化聚集索引。他不明白具体该怎么做,似乎也不知道什么是聚集索引。我对他说你可以看看你插入记录时的磁盘IO是否比较多,他说他的磁盘已经换成了RAID,不好查看磁盘IO。OK, 我继续替他分析道: 你那个insert慢是因为你每次插新记录,数据库服务器都要在中间的一个位置插入,引起磁盘文件的大量读写. 他说: 如何解决?  我的硬件配置已经没法升级了. 我说: 你可以看看聚集索引, 要优化聚集索引. 他似乎不太明白, 写了下面这写东西:

    是这个吗:


    use WanerSoft2007
    declare @table_id int
    set @table_id=object_id('dbo.Ws_UserProInfo')
    dbcc showcontig(@table_id)
    dbcc dbreindex('dbo.Ws_UserProInfo','',0)

    我看了一下, 说这是重做索引的批处理,不是聚集索引.我继续说道:聚集索引是指记录的物理摆放次序即按照聚集索引来做的。是最重要的一个索引,聚集索引设计的好,多种数据库操作都可以获得好的性能。设计的不好就会引起性能上的巨大差异, 比如插入操作, 设计得好时,新记录只需要在物理的最后添加就可以了,不需要移动很多记录,所以快,设计得不好时,新记录就是在物理上的中间某个位置插入,那么就必须移动很多记录,就会有大量的磁盘IO。他去找了一会,回来给我贴了个图:

    我看了图,对他说聚集索引要选用短的字段,还要单向递增,可以选日期,identity等。他这回就明白了,问是不是聚集索引里面去掉bookid和nclassid字段. 我说是,他照做了,后来回来说,太好了,问题解决了。

  • 相关阅读:
    年度回忆录(?——2011.01)
    我在学英语
    技能冷却
    抗锯齿
    在cocos2dx 2.x FPS 等参数
    手指效果
    cocos2dx 简单OpenGL 画图
    cocos2dx tile map瓦片地图的黑线及地图抖动解决方案
    C++操作SQLite数据库
    精灵点击移动
  • 原文地址:https://www.cnblogs.com/mikelij/p/1779898.html
Copyright © 2020-2023  润新知