zoukankan      html  css  js  c++  java
  • SQL Server 优化笔记

          最近调优了一个使用JBuilder + JBoss + SQL Server构建的系统,典型的三层结构,前端由JBoss搭建的web服务器构成,后端使用SQL Server作为数据库。在调优之前,系统表现出的问题就是基本上没有并发访问,涉及到数据量大的操作反应特别慢,在多个用户同时访问时可能web服务奔溃。

      与运维人员深入了解之后,针对最严重的case进行了深入了解,从web端的日子,代码分析,发现主要的问题集中在两块,一是代码逻辑的问题,而是数据库访问的耗时。

         SQL Server的版本是2005.其中几张表数据量特别大,大小都在700-800M,记录已经达到200百万行左右。

         SQL Server 2005 提供了SQL Server Profiler来跟踪数据库内部执行的sql语句,以及Sql语句执行的耗时等等信息,可以很好的来分析对于表的读写性能。在仔细分析SQL Server Profiler的数据之前,先准备一点关于存储过程的知识。 

    1.存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。主要是提高了sql语句的执行效率,数据的查找还是需要做索引
    
    2.一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
    
    3.创建
    
    create proc sp_name
      @[参数名] [类型],@[参数名] [类型]
      as
      begin
      .........
      end
    
    4.调用
    exec sp_name [参数名]
    
    5.显示存储过程
    show procedure status

         使用存储过程之后,可以加速SQL语句执行的前期准备。

       对于一张表数据在10万行左右,在好的索引下,对这张表执行select语句,耗时基本上可以低于1ms。

    在同样的表上建立索引之后的查询结果对比,表的大小在20M,行数在10万行左右,建立了好的索引,查询时间基本上为1ms一下。

    这张表大小在近800M,数据记录在160万行,建立好的索引之后,查询时间下降到了230ms。

  • 相关阅读:
    Azure 中的多个 VM NIC 和网络虚拟设备
    程序猿入职秘籍大分享!分分钟走上人生巅峰
    高考估分查分选志愿一键搞定_支付宝又操办了件人生大事
    三大新兴力量_引领中国消费新经济丨图媒体
    史上最全编程语言列表_你掌握了哪些?
    市值登顶亚洲后_马云对话全球投资者:与未来相比阿里还是个baby
    无法访问ECS云服务器怎么解决?
    快速搭建phpwind论坛系统
    Linux全自动安装面板脚本_支持目前比较流行的国内面板
    为阿里云ECS(Windows 2012)创建IPv6隧道地址
  • 原文地址:https://www.cnblogs.com/liuan/p/2694344.html
Copyright © 2011-2022 走看看