zoukankan      html  css  js  c++  java
  • SQL 数据库性能问题排查

    一个项目的运行,总伴随着性能问题,系统查询过慢,如何快速查询等

    下面将简单讲解一下,如何去排查及解决这些问题。

    开发过程中:

      1:不要绝对的三范式,适当建立冗余能够提高查询速度,不用多表关联

      2:能用表关联就不要出现循环SQL

       例子:下面的这种情况,每查出T_t1的一条数据,就会循环查找T_t2中的数据,使表关联的索引失效,造成反应慢。   

    --错误示范
    SELECT A,B,(SELECT C FROM T_t2 WHERE ID=T_t1.ID) FROM T_t1
    --正确做法
    SELECT A,B,C FROM T_t1,T_t2 WHERE T_t1.ID=T_t2.ID

      3:配置log4jdbc,方便查找出问题的SQL

      4:创建合理的索引

      索引适用于在大范围数据库查找小范围的数据,若该列数据大部分值相同,或者获取数据量比重大,就不适用于创建索引。

    维护过程中:

      1:更改数据库参数:当一个数据库安装后,应更改参数,使其更有利于项目的使用

        修改数据缓存区参数:数据缓存是把磁盘的信息装入到内存,读取内存比读取磁盘速度快的多,应适当提高数据缓存区。

        修改个人排序区参数:当需要排序的数据,多于提供的内存空间,就会部分数据在排序区,而部分在磁盘区,会经过多次内存与磁盘交换,才能完成排序,影响排序速度。

      2:定期进行表分析,让数据库表一些信息重新生效

      3:重建索引,对于一个经常会添加删除的表来说,数据变化不大,但索引却在不停膨胀,所以,定期重建索引,有利于查询。

      4:定期对表碎片进行整理。

      5:查看慢SQL的执行计划:以Sybase作为示例

    复制代码
    查看语句的执行计划: 
    SET  SHOWPLAN  ON  
    GO  
    SQL语句
    GO  
    SET  SHOWPLAN  OFF  
    GO  
    
    查看存储过程执行计划: 
    SET  SHOWPLAN  ON  
    GO  
    EXEC  PR_存储过程
    GO  
    SET  SHOWPLAN  OFF  
    GO   
    复制代码

     

     
     
  • 相关阅读:
    webService理解
    通过ajax.net调用webservice
    .net中调用webservice,post、get方式实现调用
    webservice加载异常
    http 的get,post方式访问url
    dorado
    dorado7中父窗体获取动态生成的iframe中的对象
    dorado中session
    最长公共子序列
    线性DP-数字三角形,最长上升子序列
  • 原文地址:https://www.cnblogs.com/haiyabtx/p/5628259.html
Copyright © 2011-2022 走看看