zoukankan      html  css  js  c++  java
  • SQL Server数据库的整理优化的基本过程(一)

    SQL Server 数据库的整理优化的基本过程(一)

    高建刚

    作为系统的重要一个部分,数据库的性能在系统的运行过程中起到了非常关键的作用,系统的运行过程中,我们经常遇到客户抱怨系统运行的太慢,统计一个月的报表经常会出现超时的情况,面对这些问题,我们应该如何处理哪?程序优化和数据库优化要同步进行,程序方面应该从编写的 T-SQL 语句、数据库的访问引擎、系统的架构设计等方面,当然了 WEB Form 的程序还要考虑到应用服务器以及 IIS 的问题等等,这是个系统架构师的问题,在此不多涉及。对我来说最关心的还是如何从数据库方面来优化数据库,下面就结合我个人的从业经验对数据库的优化做一个简单的介绍。

    首先,当我们面对一个数据库时,我们应该从基础慢慢的去整理,使之成为一个基本正常运行的数据库,这其中包含了很多的信息,由于一个系统的开发、实施、调试过程中都有可能会对数据库的正常运行造成一定的影响,所以我们要从基础着手,看看是否是正常运行的数据库,即便这个数据库是非常陌生的,我们也可以慢慢的去整理,以便达到初期的整理优化的效果。

    查看是否所有的表都有主键。一个表没有主键会造成各种各样的问题,我们可以通过以下语句:

    select NAME

    from sysobjects T1

    where xtype = 'U'

      AND objectproperty ( object_id ( T1. Name), 'IsUserTable' )= 1

      AND objectproperty ( object_id ( T1. Name), 'TableHasPrimaryKey' )= 0

    ORDER BY [NAME]

    通过上述语句的执行,我们会发现,数据库中有哪些表没有主键约束,对这些表,要进行分析,增加主键。

    下一步,我们来看看聚集索引,相信很多人对于聚集索引造成的性能问题印象已经很深了,几乎涉及到性能两个字的时候,我们就会想到索引这个词。通过下边的语句我们可以找到那些表没有聚集索引:

    SELECT NAME

    FROM sysobjects T1

    WHERE xtype = 'U'

      AND objectproperty ( object_id ( T1. Name), 'IsUserTable' )= 1

      AND objectproperty ( object_id ( T1. Name), 'TableHasClustIndex' )= 1

    ORDER BY [NAME]

    缺少聚集索引的表,处理的时候要慎重,怎么样建立合适的聚集索引是需要仔细考虑的,有时候,聚集索引建立的不好,会导致索引碎片的频繁增加,最重导致更加失败的性能表现,所以要从应用、表结构、数据产生的顺序等多方面考虑,然后再确定聚集索引的键值,维护好完成聚集索引后,通过实际应用来查看性能是否有所改善。

    下一节中,我们将重点关注到索引的优化。

    第二节 索引

  • 相关阅读:
    管理培训笔记
    Jhipster Registry(Eureka Server) Docker双向联通与高可用部署
    (转阮一峰)深入理解OAuth 2.0
    基于spring security 实现前后端分离项目权限控制
    spring security实现动态配置url权限的两种方法
    Spring Security 架构与源码分析
    开源APM系统skywalking介绍与使用
    Angular 中后台前端解决方案
    SpringBoot+Security+MyBatis+ES+MQ+Redis+Docker+Vue的电商系统
    Jenkins+GitLab+Docker+SpringCloud实现可持续自动化微服务
  • 原文地址:https://www.cnblogs.com/Gaojier/p/2783533.html
Copyright © 2011-2022 走看看