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]
缺少聚集索引的表,处理的时候要慎重,怎么样建立合适的聚集索引是需要仔细考虑的,有时候,聚集索引建立的不好,会导致索引碎片的频繁增加,最重导致更加失败的性能表现,所以要从应用、表结构、数据产生的顺序等多方面考虑,然后再确定聚集索引的键值,维护好完成聚集索引后,通过实际应用来查看性能
相关文档:
在我们进行sql注入的过程中常常会用到union查询方法,大多数情况下使用union查询法可以让我们很快的知道目标的数据组织方式。然而当我们遇到ntext、text或image数据类型时,union查询就不太管用了。以sql server为例,在这种情况下会抛出如下错误:ntext 数据类型不能选为 DISTINCT,因为它 ......
select * from orders where month(orderdate)= (select month(orderdate) from orders where orderid=10248)
1.一个月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
......
# MySQL-Front 5.1 (Build 4.2)
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
/*!40101 SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */;
/*!40103 SET SQL_NOTES='ON' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS */ ......
1.使用Management Studio Express,用“Windows身份验证”登录,选中SQL服务器名,右击鼠标选择属性,在服务器属性选项页面,选择“安全性”,将服务器身份验证由“Windows身份验证”改为“SQL Server和Windows身份验证”,单击确定。
2.使用SQL Server 2005外围应用 ......
若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE
命令。
若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused
。
可在进程中的任一点停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都将保留。 ......