`
evget
  • 浏览: 144691 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

50种巧妙优化SQL Server数据库的方法(一)

阅读更多
文章关键字:|优化|SQL Server|数据库|查询|速度|I/O|缺陷|服务器|CPU|竞争|资源|

查询速度慢的原因很多,常见如下几种:

没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)。
I/O吞吐量小,形成了瓶颈效应。
没有创建计算列导致查询不优化。
内存不足。
网络速度慢。
查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)。
锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)。
sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
返回了不必要的行和列。
查询语句不好,没有优化。
可以通过如下方法来优化查询 :

1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。

2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)。

3、升级硬件。

4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。

5、提高网速。

6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半)。

7、增加服务器 CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作Update,Insert, Delete还不能并行处理。

8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。

9、DB Server 和APPLication Server 分离;OLTP和OLAP分离。

10、分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件'分区视图')

在实现分区视图之前,必须先水平分区表。
在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:

查询语句的词法、语法检查。
将语句提交给DBMS的查询优化器。
优化器做代数优化和存取路径的优化。
由预编译模块生成查询规划。
然后在合适的时间提交给系统处理执行。
最后将执行结果返回给用户其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
12、Commit和rollback的区别 Rollback:回滚所有的事物。 Commit:提交当前的事物. 没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程。



未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9201
分享到:
评论

相关推荐

    50种方法巧妙优化你的SQL Server数据库

    《50种方法巧妙优化你的SQL Server数据库》 SQL Server数据库优化是提升系统性能的关键环节。以下是一些针对SQL Server数据库优化的有效策略: 1. **建立和优化索引**:索引是加速查询的关键,特别是在大数据量的...

    50种方法巧妙优化你的SQLServer数据库

    在SQL Server数据库管理中,优化是提升系统性能的关键步骤。以下是一些针对SQL Server数据库的优化策略,旨在提高数据处理速度、减少资源消耗并改善整体系统效率。 1. **I/O设备分离**:将数据、日志和索引分别放置...

    50种方法巧妙优化SQL Server数据库

    SQL Server数据库优化是一个复杂而重要的任务,涉及到许多层面的调整和改进。以下是对标题和描述中提到的一些关键知识点的详细解释: 1. **索引**:索引是提高查询速度的关键,缺乏索引或未正确使用索引可能导致...

    50种方法巧妙优化你的SQLServer数据库.doc

    标题中的“50种方法巧妙优化你的SQLServer数据库”指的是针对SQL Server数据库进行性能提升的各种策略和技巧。这些方法旨在改善数据库的响应时间、吞吐量以及资源利用率,以满足日益增长的业务需求。 描述中提到的...

    50种方法巧妙优化你的SQLServer数据库中文最新版本

    本文档通过50种方法来详细讲述如何巧妙优化你的SQLServer数据库;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    50种方法巧妙优化你的SQL-Server数据库.doc

    ### 50种方法巧妙优化你的SQL Server数据库 #### 一、引言 数据库性能优化是确保业务系统高效运行的关键之一。特别是在SQL Server环境中,合理的优化策略不仅能显著提升查询速度,还能有效降低服务器资源的消耗。...

    巧妙运用WinCC V6.0 VBS 脚本实现对 SQL Server数据库的存储与查寻

    巧用WinCC V6.0 VBS脚本与SQL Server数据库的交互 在现代工业自动化领域,西门子WinCC V6.0作为一款先进的上位监控软件,为工厂自动化提供了强大的工具。本文将深入探讨如何利用WinCC V6.0内置的VBS脚本编辑器,与...

    在SQL Server数据库编写通用数据访问方法

    在SQL Server数据库编写通用数据访问方法,主要涉及的是如何在多数据源环境中,利用数据访问技术,尤其是ADO.NET,来创建高效且具有可移植性的应用程序。ADO.NET引入了专用的.NET数据提供程序,允许直接与特定的数据...

    Playfair_eclipse版本SQL SERVER数据库版本

    本程序"Playfair_eclipse版本"则巧妙地结合了Playfair加密算法与SQL SERVER数据库,为学习者提供了一个实用的示例。 Playfair加密算法是一种古典的双钥密码系统,由查尔斯·惠斯利在19世纪提出,其主要特点是通过...

    SQL Server 将某一列的值拼接成字符串.docx

    首先,`FOR XML PATH('')` 是SQL Server中用于生成XML的一种方式,但在这里它被巧妙地用于字符串拼接。在提供的示例中,查询首先通过LEFT JOIN操作连接了 `_VIPHall_Link_AuxType`, `_VIPHall`, 和 `_Dim_VIPHall_...

    项目教学法在《SQL Server数据库》课程教学中的实施.pdf

    项目教学法是一种以建构主义学习理论为基础的教学方法,强调以...因此,项目教学法被认为是适合于《SQL Server数据库》课程的教学方法,能够满足当前计算机应用技术及网络技术专业学生的学习需求和职业能力培养目标。

    基于ASP.NET的徐州工程学院宿舍管理系统_WEB管理系统_SQLServer数据库应用.rar

    4. **SQL Server Management Studio (SSMS)**:用于管理和维护SQLServer数据库,包括创建表、视图、存储过程等数据库对象,以及数据导入导出、性能优化等功能。 5. **身份验证和授权**:ASP.NET提供了一套完整的身份...

    任务驱动教学法在SQL Server数据库课程教学中的应用.pdf

    任务驱动教学法是一种以学生为主体、教师为引导的教学模式,在SQL Server数据库课程教学中的应用是一种有效的教学实践。该方法通过将知识点融入到具体的任务中,让学生在完成任务的过程中掌握并应用知识,从而达到...

    SQL Server中,在“整型数字”和“字符串表示的十六进制数字”之间进行转换的函数

    在SQL Server数据库管理系统中,处理数据类型转换是常见的操作,特别是在处理数字和各种字符串格式时。本篇文章将详细探讨如何在“整型数字”和“字符串表示的十六进制数字”之间进行转换,主要涉及两个关键函数:...

Global site tag (gtag.js) - Google Analytics