宝哥软件园

十多种SQL Server数据库优化方法

编辑:宝哥软件园 来源:互联网 时间:2021-08-07

类型:数据库类大小:40.7M语言:中文评分:6.6标签:立即下载几种巧妙优化SQL Server数据库的方法。在实践中,导致查询速度慢的原因有很多,其中最常见的有以下几种:没有索引或没有索引(这是查询速度慢最常见的问题,也是程序设计的缺陷)。

I/O吞吐量小,形成瓶颈效应。

查询没有优化SQL Server数据库,因为没有创建计算列。

内存不足。

网速慢。

查询的数据量太大(可以使用多个查询,其他方法可以减少数据量)。

锁或死锁(这也是最常见的查询速度慢的问题,这是编程的缺陷)。

Sp_lock,sp_who,活动用户视图,因为读写竞争资源。

返回了不必要的行和列。

查询语句不好,没有优化。

查询:可以通过以下方法进行优化

1.将数据、日志和索引放在不同的I/O设备上,以提高读取速度。以前可以将Tempdb放在RAID0上,但不支持SQL2000。数据量(大小)越大,改善I/O就越重要.

2.垂直和水平分割表格以减小表格的大小(sp_spaceuse)。

3.升级硬件。

4.根据查询条件,建立索引,优化索引,优化SQL Server数据库访问方法,限制结果集的数据量。注意适当的填充因子(最好使用默认值0)。索引应该尽可能小。最好使用小字节的列来构建索引(参见索引的创建)。不要为具有有限值的字段(如性别字段)构建单一索引。

5.提高网速。

6.扩展服务器的内存。Windows 2000和SQL server 2000可以支持4-8G内存。配置虚拟内存:虚拟内存的大小应该根据计算机上并发运行的服务来配置。运行微软的SQL Server?2000,请考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5倍。如果额外安装了全文检索,并且您打算运行Microsoft search service来执行全文索引和查询,请考虑:

将虚拟内存大小配置为计算机中安装的物理内存的至少3倍。将SQL Server最大服务器内存服务器配置选项设置为物理内存的1.5倍(虚拟内存大小设置的一半)。

7.增加服务器CPU的数量;然而,必须理解,并行处理和串行处理需要更多的资源,例如内存。是使用并行运行还是串行运行由MsSQL自动评估选择。单个任务被分解成多个任务,这些任务可以在处理器上运行。例如,延迟查询的排序、链接、扫描和分组是同时执行的。SQL SERVER根据系统负载确定最佳并行级别。消耗大量CPU的复杂查询最适合并行处理。但是,更新操作更新、插入和删除不能并行处理。

8.如果使用like进行查询,单纯使用索引是不够的,但是全文索引会消耗空间。当like“a %”使用类似“% a”的索引,但不使用索引来查询类似“% a%”的索引时,查询时间与字段值的总长度成正比,因此不能使用CHAR类型,而是使用VARCHAR。全文索引是为具有长值的字段构建的。

9.数据库服务器和应用服务器是分开的;OLTP和OLAP的分离。

10.分布式分区视图可以用来实现数据库服务器复合体。联合体是一组单独管理的服务器,但它们相互协作以分担系统的处理负载。这种通过划分数据形成数据库服务器联合体的机制,可以扩展一组服务器,以支持大型多层网站的处理需求。有关更多信息,请参见设计联合数据库服务器。(参考SQL帮助文件“分区视图”)在实现分区视图之前,必须对表进行水平分区。

创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名称的查询可以在任何成员服务器上运行。系统的操作就好像每个成员服务器都有一个原始表的副本,但实际上每个服务器只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。

11.重建索引DBCC REINDEX,DBCC INDEXDEFRAG,收缩数据和日志DBCC SHRINKDB,DBCC SHRINKFILE。设置自动收缩日志。对于大型数据库,不要设置自动数据库增长,这会降低服务器性能。非常强调T-sql的编写,列出了以下共同点:首先,DBMS处理查询计划的过程如下:

查询语句的词法和语法检查。

将该语句提交给数据库管理系统的查询优化器。

优化器对SQL Server数据库进行代数优化和访问路径优化。

查询计划由预编译模块生成。

然后在适当的时候提交给系统进行处理和执行。

最后,执行结果返回给用户。其次,看看SQL SERVER的数据存储结构:一页大小为8K(8060)字节,八页为一个扩展区,按照B-tree存储。

12.提交和回滚之间的区别。回滚:回滚所有内容。提交当前事物。没有必要用动态SQL写东西。如果你想写什么,请写在外面,比如:begin tran exec(@s) commit trans或者把动态SQL写成函数或者存储过程。[SPAN]

13.在查询Select语句中,使用Where语句限制返回的行数,以避免表扫描。如果返回不必要的数据,会浪费服务器的I/O资源,增加网络负担,降低性能。如果表非常大,在表扫描过程中表将被锁定,其他连接将被禁止访问表,导致严重后果。

更多资讯
游戏推荐
更多+