数据库性能优化和调整

数据库性能的优化和调整
一、     概述
目的:通过将网络流通、磁盘I/Ocpu的响应时间减到最小来减少事务的反应时间,提高效率和用户满意度。
范围:包括对硬件、操作系统、与关系数据库管理系统的配置,以及访问这些组件的应用详细分析。
分类:分为应用调整、配置调整、硬件调整三类。其中应用调整是SQL server调整优化的第一步,主要指调整SQL语句的执行性能。在硬件调整之前必须对包括内存、CPUI/O资源在内的系统资源进行估计和容量规划。配置调整和硬件调整是紧密相关的,主要通过修改系统中硬件的类型和数量来完成。
流程:确定问题》设计解决方案---》实现解决方案---》分析结果
基本方法:良好的索引、估算磁盘I/O子系统性能、调整应用程序和查询、利用SQL Server性能监视器、利用SQL Server查询分析器。
【注:监视手段又分为时间探查器、系统监视器、错误日志、系统存储过程、DBCC命令或其他系统变量或函数、sql server查询分析器。】
 
二、     优化数据库设计
1 、简单介绍:包括逻辑设计和物理设计。逻辑设计是是数据库设计的重要环节。
2 、设计表和字段:
表是构成数据库的基本单元,字段是组成数据库表的元素,基于此,这是优化数据库的基础。
*      列命名技巧实例:
  新建三张表:
create table customer01 (cu1_id int, cu1_name varchar(20), cu1_adress varchar(20), cu1_sex varchar(20))
insert into customer01 values (1, 'a', 'aaa', 'aaa')
insert into customer01 values (2, 'b', 'bbb', 'bbb')
 
 
create table customer02 (cu2_id int, cu2_name varchar(20), cu2_adress varchar(20), cu2_sex varchar(20))
insert into customer02 values (1, 'a', '111', 'ccc')
insert into customer02 values (2, 'b', 'cad', 'wre')
 
create table linking (so_id int, so_name varchar(20), so_adress varchar(20), so_sex varchar(20))
insert into linking values (1, 'a', '222', 'hhhh')
insert into linking values (44, 'a', '666', '888')
select * from customer01, customer02, linking where cu1_name = 'a' and cu1_id = cu2_id and cu2_id = so_id and cu1_adress = 'aaa'
 
 
create table customer001 (id int, name varchar(20), adress varchar(20), sex varchar(20))
insert into customer001 values (1, 'a', 'aaa', 'aaa')
insert into customer001 values (2, 'b', 'bbb', 'bbb')
create table customer002 (id int, name varchar(20), adress varchar(20), sex varchar(20))
insert into customer002 values (1, 'a', '111', 'ccc')
insert into customer002 values (2, 'b', 'cad', 'wre')
create table linking0 (id int, name varchar(20), adress varchar(20), sex varchar(20))
insert into linking0 values (1, 'a', '222', 'hhhh')
insert into linking0 values (44, 'a', '666', '888')
select * from customer001, customer002, linking0 where customer001.name = 'a' and customer001.id = customer002.id and customer002.id = linking0.id and customer001.adress = 'aaa'
 
 
三、设计联合数据库服务器【未完,出错
                 1. 分区:将一个大表拆分成更小的表单,只访问局部数据库。
  use master
IF EXISTS (SELECT NAME FROM sys.databases WHERE name = N'Partition_DB')
DROP DATABASE [Partition_DB]
 
 
 CREATE DATABASE [Partition_DB]
ON PRIMARY
(NAME='Partition_DB Primary FG',
FILENAME=
'C:\Partition_DB Primary FG.mdf',
SIZE=5,
MAXSIZE=500,
FILEGROWTH=1 ),
FILEGROUP [Data Partition DB FG1]
(NAME = 'Partition_DB FG1',
FILENAME ='C:\Partition_DB FG1.ndf',
SIZE=5,
MAXSIZE=500,
FILEGROWTH=1 ),
FILEGROUP [Data Partition DB FG2]
(NAME = 'Partition_DB FG2',
FILENAME ='C:\Partition_DB FG2.ndf',
SIZE=5,
MAXSIZE=500,
FILEGROWTH=1 ),
FILEGROUP [Data Partition DB FG3]
(NAME = 'Partition_DB FG3',
FILENAME ='C:\Partition_DB FG3.ndf',
SIZE=5,
MAXSIZE=500,
FILEGROWTH=1 )
 
 
 
四、     查询优化:
1、          减少网络流量和优化网络设置:
在优化服务器时最好是监视客户端应用程序,与服务器之间的流量,客户端和SQL Server之间的网络往返通常是数据库应用程序性能较差的首要原因。
*      实例:设置不回复行影响信息,不与网络发生信息交流,减少网络流量。
【注:sql server在每个语句运行完之后都会发送一条消息,详细说明每个语句影响的行数,如果不需要的话,可
以禁用这些回复设置】
2、          优化网络设置
较慢的网络会影响SQL Server发送和接收数据,可通过配置网络选项提高性能:
3、          优化名字解析:
Windows 服务器名字解析的本质是将IP地址映射为计算机名称。通过LMHOSTSA配置可以将项目预先添加到服务器缓存,我们可以使用SQL SERVER CONFIGURATION MANAGER执行类似功能:
*      实例1:添加别名【前几天讲的sql server运程问数据库就是很好的例子】
4、          SQL Server 内存配置:
解析:SQL Server根据需要获取和释放内存,内存的配置影响服务器的性能:
最小服务器内存:确保SQL Server至少以最小的分配内存量启
动。
最大服务器内存:可以在SQL Server启动时指定它的最大内存量,此选项不推荐,它不能合理的释放和配置各种操作的内存使用量。
最大工作线程:指定用户连接到SQL Server提供支持的线程数
创建索引占用的内存:配置创建索引时排序操作所使用的内存量,不常创建索引且在非峰值时间创建索引时,可提高索引的性能。
每次查询占用的最小内存:可用于指定分配给查询执行的最小内存量。
5.使用IO配置选项:服务器配置中的内部还原Recovery Internal
选项可用于配置IO的使用并影响服务器性能。
Recovery interval 是一个高级选项:
SP_CONFIGURE 系统内存设置为1,系统恢复时间设置为3,用户可通过改变这些选项来提高系统性能:
6、          使用数据库引擎优化顾问
可以并不精通数据库的结构精髓就可以很快的提升数据库性能,在对工作负荷分析后,它会给出建议添加、删除或修改数据库中的物理设计结构,以降低工作负荷
启动:【sql server 2005/【性能工具】/ 【数据库引擎优化顾问】
开始查询:选中运行的一段代码进行分析右键单击选则“油腻感优化引擎过问进行分析”连接到数据库引擎
 
 

本文出自 “uphold” 博客,转载请与作者联系!

 

你可能感兴趣的:(数据库,职场,sqlserver2005,休闲)