• 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。

  • 相关阅读:
    解决在Linux下安装Oracle时的中文乱码问题
    oracle linux 安装过程错误 :Error in invoking target ‘agent nmhs’ of makefile
    mysql 远程连接速度慢的解决方案
    nginx : TCP代理和负载均衡的stream模块
    Xshell同时向多个会话发送指令的方法
    迪杰斯特拉算法
    全周期课程体系
    亲手安装RabbitMq 3.7.2 并安装Trace插件
    山东省枣庄市台儿庄区云平台运维故障处理一例
    开始学习算法
  • 原文地址:https://www.cnblogs.com/liuan/p/2694344.html
Copyright © 2020-2023  润新知