在一个大型的数据库中,性能成为人们关注的焦点之一,如何让数据库高效有效的运行成为广大数据库管理人员和开发人员必须要考虑的问题。
“好性能”
性能是一个应用或多个应用在相同的环境下运行时对效率的衡量。性能常用响应时间和工作效率来表示。响应时间是指完成一个任务花费的时间,可以从以下三方面来减少响应时间:
- 减少竞争和等待的次数,尤其是磁盘读写等待次数
- 利用更快的部件
- 减少利用资源所需的时间
绝大多数性能的获得来自于优秀的数据库设计、精确的查询分析和适当的索引。最好性能的获得能够通过确立优秀的数据库设计,在开发时学会使用SQL Server查询优化器来实现。
为了取得更好的数据库性能,我们就需要对数据库进行优化,减少系统资源的竞争,如对数据cache,过程cache,系统资源和CPU的竞争。
在SQL Server中,有如下优化层次:
- 应用层——大部分性能的获得来自于对你的SQL应用中查询的优化,这必须是以好的数据库设计为基础的。
- 数据库层——应用共享在数据库层中的资源,这些资源包括硬盘,事务日志和数据cache。
- 服务器层——在服务器层有许多共享的资源,包括数据高速缓存,过程高速缓存,锁,CPU等。
- 设备层——指的是存储数据的磁盘及其控制器,在这一层,你应尤其关注磁盘的I/O。
- 网络层——指连接用户和SQL Server的网络。
- 硬件层——指可利用的CPU。
- 操作系统层——理想地,SQL Server是一台机器的唯一主要应用,它必须和操作系统以及其他sybase软件,如Backup Server或SQL Server Monitor共享处理器、内存以及其他资源。
在大多数情况下面,我们是对应用层进行优化,,因为对应用性能的优化是大家最乐于接受的功能,其结果能被观测及检验,查询的性能是SQL应用的整个性能的一个关键。
应用层上的问题包括以下内容:
- 决策支持VS.和在线事务处理(OLTP)需要不同的性能策略
- 事务设计能够减少并发,因为长的事务保持占用锁,也就减少了其他用户对相关数据的存取
- 关联一致性对数据修改需要join操作
- 支持select操作的索引增加了修改数据的时间
- 为了安全而设立的审计限制了性能
在应用层优化的选项包括:
- 远程处理或复制处理能够把决策支持从OLTP机器中分离出来
- 利用存储过程来减少编译时间和网络的利用
- 利用最少量的锁去满足你的应用需要
数据库层的问题包括:
- 建立备份和恢复方案
- 在设备上分布存储数据
- 审计操作影响性能;仅审计你所需的
- 日常的维护活动将导致性能的降低和导致用户不能操作数据库表
在数据库层上优化选择包括:
- 利用事务日志的阀值来自动转储事务日志防止其超出使用空间
- 在数据段中用阀值来监视空间的使用
- 利用分区来加速数据的装入
- 对象的定位以避免硬盘的竞争
- 把重要表和索引放入cache中,保证随时取得
服务器层的问题有:
- 应用的类型——服务器是支持OLTP还是DSS,或者两者都支持
- 所支持的用户数影响优化决策——随着用户数的增加,对资源的竞争会发生改变
- 网络负荷
- 当用户数和事务数达到一定的数量时复制服务器或其他分布式处理是一个解决的方法
服务器层的优化的选项包括:
- 优化内存——一个关键的配置参数和其他方面的参数
- 决策是客户端处理还是服务器端处理——有些处理能在客户端进行吗
- 配置cache的大小和I/O的大小
- 增加多个CPU
- 为空闲时间排定批处理任务和生成报表
- 工作负荷发生改变,重新配置特定参数
- 决定是否可能把DSS移到另一个SQL服务器中设备层
设备层的问题包括:
- 主设备、包含用户数据库的设备,用户数据设备,或数据库日志是否要镜像
- 怎样在设备之间分布系统数据库、用户数据库和数据库日志
- 为获得对堆表插入操作的高性能,是否有必要进行分区
设备层上优化的选项包括:
- 用多个中等大小的设备及多个控制器可能比用少量的大设备有更好的I/O性能
- 分布数据库,表和索引以在不同的设备上进行I/O装载
网络层
实际上,SQL Server的所有用户都是通过网络存取他们的数据。网络层上的主要问题有:
- 网络的流量
- 网络的瓶颈
- 网络的速度
网络层上优化的选项包括:
- 配置包的大小,以使其与应用的需要相匹配
- 配置子网
- 分隔出繁忙的网络运用
- 创建一个高容量的网络
- 配置多个网络引擎
- 更好地设计应用,限制所需的网络传输
硬件层
在硬件层上的问题包括
- CPU的效率
- 磁盘的存取:控制器和磁盘
- 磁盘备份
- 内存的使用
在硬件层上优化的选项包括:
- 增加CPU以适应工作负荷
- 配置调度程序以提高CPU利用率
- 遵循多处理器应用设计指导以减少竞争
- 配置多个数据cache操作系统层
操作系统层的主要问题有:
- 文件系统——是否被SQL Server独占使用
- 内存管理——精确估算操作系统和其他程序的内存占用
- CPU的利用——整个系统共有多少处理器可用?有多少分配给SQL Server
在操作系统层优化的选项包括:
- 网络接口
- 在文件和原始分区之间选择
- 增加内存
- 把客户操作和批处理移到其他机器上
- SQL Server利用多个CPU
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
如何使用服务来平衡Oracle RAC 数据库工作负载
为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。