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。

  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/liuan/p/2694344.html
Copyright © 2011-2022 走看看