分享
分享赚钱 收藏 举报 版权申诉 / 6

类型SQL Server优化性能的几个大方向.doc

  • 上传人:wspkg9802
  • 文档编号:8728732
  • 上传时间:2019-07-09
  • 格式:DOC
  • 页数:6
  • 大小:28.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    SQL Server优化性能的几个大方向.doc
    资源描述:

    1、SQL Server 优化性能的几个大方向SQL Server 优化性能的几个方面(一).数据库的设计可以参看最近论坛上出现一个精华帖http:/ RAID 硬件架构。简单说下使用策略:a.RAID0 可以用在只读的数据库数据表,或者是经过复制过来的数据库上,如果你对数据丢失不敏感的话也可以使用,总之这个level 下是高性能无冗余;b.RAID 5 与 RAID1 不同之处就是多了奇偶校验,所有的奇偶校验的信息会遍布各个磁盘,性能上要比 RAID1 高些,但是一旦发生磁盘 I/O 失败,就会造成性能急剧下降,同时这种方法也在 RAID0 与RAID1 间折了中,是比较通用的做法。c.RAID

    2、 10 就是 RAID0 与 RAID1 的组合,它提供了高性能,高可用性,性能上要比 RAID5 好,特别适合大量写入的应用程序,但是就是成本比较高无论是多少块磁盘你都是将损失一半的磁盘存储逻辑设计上可以通过使用数据库的一些组件比如表、约束等,在这里首先提下文件组的使用。当你经费不足,无法购买一个完整的RAID 系统的时候,你可以考虑文件组。文件和文件组体系结构一些小节:http:/ 3NF.在这之后,也许会因为表中某些经常用于存储查询的字段而把它们从表中分割,否则大量用户同时大量访问一个热门表,效率会变差。当然有时候也会进行合并表的设计,这样可以用少量的冗余换来减少过多连接的运算。具体关于

    3、这个设计表到什么程度,是否需要分割和合并都是因业务需求和系统承载力而定的,可以参看更多这方面的书籍。b.主键与外键作为表与表之间的联系,最直接的就是通过主外键进行联系。主键对于一个表来说是非常重要的,它能在表中作为行的唯一标识存在,要求:唯一性,不可为 NULL 和最小性。其中最小性指的是作为主键一定要窄。如果键值过大,由于经常存取,它会让数据库系统变得没有效率,而且它需要维护。一般使用 1-4 字节的字段作为主键。c.表字段的取舍尽量让你的表字段类型“适可而止” ,即在符合一般需求长度的前提下,最多稍微增加长度,不要过多浪费。字段存储直接体现在页中。行长越短,一页就可以存储越多的记录行。当我

    4、们从硬盘中取数据的时候以页为单位,一页中包含的记录越多,代表放入缓存区的记录就越多,吞吐量就越大。1.如果字段的内容比较固定 比如性别 身份证号码 手机号码等 就是用定长的 char 或者 nchar2.如果字段的内容变化幅度比较大 则介意使用 varchar 或者nvarchar3.一般不要让字段可以为 NULL,这样会带来一些处理上不必要的消耗,可以使用默认值代替它4.尽可能的使用约束来维护数据完整性,不要过分依赖触发器或者存储过程来维护。d.日常维护计划安排数据维护计划,比如备份,重建索引,复制数据等批处理消耗资源的操作尽量在系统空闲的时候进行。e.前端程序对基础表的存取尽量让程序通过据

    5、库中的存储过程,视图,函数来存取数据,不要让其直接在基础表上进行操作。(二).数据库查询的优化(T-SQL 优化)这个内容太大了,就挑着点来说1.尽量多的使用查询参数(SARG)它的一般格式:字段 部分的运算符 常数或者变量这里的部分运算符包括:= = != !等也是会屏蔽索引的 我在 08 上是可以使用索引的 欢迎有 2000 环境的朋友测试)例子(测试过的):where id not like 1% 或者 where id not in(1,2,3) 都是不能用到索引的c.不要对字段使用函数使用比如 substring left datediff 等等函数 但是你可以巧妙的用 SARG 方

    6、式来替代某些函数的功能比如 left(col,2)=av 可以用 col like av% 或者 abs(col-1)100 可以用 col101 or col-99d.不要使用 OR 运算符使用了 OR 运算符,多个条件中的字段只要有一个没有合适的索引,其他字段的索引都失去索引效果,都将整表扫描。 (注意索引扫描和表扫描效率差不多)但是注意在 where 中使用非 SARG 也不一定就用不到索引。有时候包含非 SARG 的条件 但是还是会对 SARG 部分进行索引利用的。2.大量数据插入a.在进行大容量数据插入的时候,可以通过 BCP BULK INSERT 选项尽量屏蔽表上的触发器、约束,

    7、甚至删除表上索引,这样可以让插入操作快很多。如果你担心数据的不规则,可以先将数据导入到一个临时表,然后再数据库里面过滤掉不规则数据后,再次由临时表插入目标表。b.同样的大容量插入,推荐使用 BULK INSERT。因为通常情况下,它比 BCP 要快。c.使用 BCP 或者 BULK INSERT 插入时候,采用表锁定而不是默认的记录锁。d.如服务器多核,可以尽量让多客户端并行对表插入。e.如果插入的数据需要转换,不要使用 DTS 等工具直接对记录的转化,可以使用先插入临时表,在临时表内转化后进行第二次导入。(三)索引的合理设计这又是很大的一块内容,也不是三言两语能说完的,介于内容的量和本人水平

    8、以及实践太少,就不写了。我提供几篇关于索引的文章: http:/ SET NOCOUNT 设置来禁用一些影响行数。还有就是要尽可能少的返回数据量,什么意思呢?就是说,如果你的程序只需要表中的某些数据,你就不要返回整个表的数据,然后再筛选,直接通过条件在服务器筛选好后再传过来。2.限定锁定超时 不要让你的查询无限运行,应该用适当的 API 设置查询超时。3.直到必要的时候才使用游标4.事务要尽可能的短5.确保将应用程序设计为可避免死锁。(五)其他的一些措施:1.优化服务器性能服务器配置选项一般都会有默认的自动调整,你可以通过实际情况,在确定有利于你的系统优化的前提下修改某些选项。比如可以修改以下几个方面:SQL Server 内存;I/0 子系统;Windows Server 选项。2.强化硬件设备加内存、加硬盘容量、升级 RAID 等等3.设计联合数据库服务器对于大型的系统,往往需要多个服务器平衡各层的处理负荷。推荐:海爷写的 SQL SERVER 性能优化综述http:/

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:SQL Server优化性能的几个大方向.doc
    链接地址:https://www.docduoduo.com/p-8728732.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开