1 数据库运行的基本原理
2 理解运行状态与分析
3 了解数据库存储空间管理
4 掌握数据性能优化的方法
DBAS 进入运行维护的主要任务
保证数据库系统安全,可靠且高效率地运行
数据库的运行除了DBMS 与数据库外,还需要各种系统部件协同工作
首先必须有各种相应的应用程序
其次各应用程序与DBMS 都需要在操作系统(OS)支持下工作
维护工作包括:
数据库存储于恢复
数据库安全性,完整性控制
检测并改善数据库性能
数据库的重组与重构
重组不修改数据库原有设计的逻辑结构和物理结构
重构部分修改模式和内模式
数据库监控分析:指管理员借助工具检测DBMS 的运行情况,掌握系统当前或以往的负荷,配置,应用等信息,并分析监测数据的性能参数和环境信息,评估DBMS 的整体运行状态,
根据监控分析实现不同,分为:
数据库系统建立的自动监控机制
由DBMS 自动监测数据库的运行情况
管理员手动实施的监控机制
根据监控对象不同分为:
数据库构架体系的监控
监控空间基本信息,空间使用率与剩余空间大小
数据库性能监控
监控数据缓冲区命中率,库缓存,用户锁,索引使用,等待事件等
对数据库使用空间进行管理是一项非常重要的工作
空间使用情况的变化带来的问题:
降低数据库系统服务性能
空间溢出导致灾难停机事故
数据库的存储结构分为:
逻辑存储结构;物理存储结构
SQL Server 数据库中 一个逻辑上的数据库直接和一个物理上的数据文件对应,没有表空间的概念
DBMS 对空间的管理包括:创建数据库空间,更改空间大小,删除空间,修改空间状态,新建,移动,关联数据文件等
数据库性能优化是DBMS 系统上线后最常见的运行维护任务之一
践行数据库性能优化时,首先确定优化目标,一般从数据库运行环境,参数调增,模式选择,数据库存储优化,查询优化几个方面考虑
数据库运行环境与参数调整:
可以分为 外部环境,调整内存分配;调整磁盘I/O,调整资源竞争 等几个方面着手改变数据库参数,提高其性能
外部调整:数据库性能和外部环境有很大关系,主要外部条件包括:数据库性能和外部环境有很大关系,主要外部条件包括:CPU (CPU 的处理能力是衡量计算机性能的一个标志),网络(大量的SQL 数据在网络上传输会导致网速变慢)
CPU 使用情况判断依据:对于一台数据库服务器,如业务空闲时使用率超过90% ,说明服务器缺乏CPU 资源,如果高峰期CPU 使用率任然低,说明服务器COU 资源充足
解决方案: 增加CPU 数量或者终止需要许多资源的进程
调整内存分配:调整相关参数静止数据库内存分配,很大程度改善数据库系统性能。
提哦啊正磁盘I/O: 数据库性能优劣的重要度量响应时间
改善方法:令I/O 使劲最小化,减少磁盘文件竞争带来的瓶颈
调整竞争:
修改参数以控制连接到数据库的醉的进程数
较少调度进程的竞争
较少多线程服务进程竞争
较少重做日志缓冲区竞争
减少回滚竞争
模式调整与优化
数据库的规范化过程:高效率利用存储空间,减少数据的冗余,减少数据的不一致性
问题: 规范化关系解决了数据维护的异常,并使数据冗余最小化,但或导致数据处理性能下降
反规范化:将规范化关系转换为非规范化的关系的过程
反规范化方法:增加派生冗余列,增加冗余列,重新组表,分割表和新增汇总表等方法,都会破坏数据完整性
采用反规范化技术从实际出发均衡利弊
(1)增加派生性冗余列
增加列由表中的一些数据项经过计算生成
作用: 查询减少连接操作,避免使用聚合函数
(2)增加冗余列
在多个表中增加具有相同语义的列,常用来在查询是避免连接操作。(外码不属于这种情况)
(3)重新组表
当用户经常查看的某些数据由多个表连接之后才能得到,就可以考虑先把这些数据重新组成一个表,这样查询时会减少连接提高效率
(4)分割表
水平分割: 根据行的使用特点进行分割,分割之后所有表的结构都相同,而存储的数据不同使用并(Union )操作
垂直分割: 根据列的特点分割,分割后所得表除了都包含助码外其他列都不相同,通常将常用列与不常用列分别放在不同表中,查询减少I/O 次数,缺点是使用连接(Join)操作
(5) 新增汇总表
大量指向报表等汇总操作会影响性能
为降低汇总操作的时间,将频繁使用统计中间结果或导致结果存储在汇总表中,从而降低数据访问量和汇总操作的CPU 计算
存储优化
(1)物化视图(索引视图)
定义:包括一个查询结果的数据库对象,预先计算并保存表连接或聚集等耗时较多的操作结果。(一个定期刷新数据的视图,自动刷新或人工刷新)
适用于多个数据量较大的表进行连接操作,及分布式数据库中在多站点的表进行连接时使用。
物化视图还可以进行远程数据的本地复制(物化视图的存储也称为快照),用于实施数据库间的同步。
(2)聚集
聚集是物理存储表中数据的可选择的方法
一个聚集是以组表,将经常一起使用的具有同一公共列值得多个表中的数据行存储在一起,由公共列构成的聚集码
作用:最小化必须执行的I/O次数
注意:将记录插入聚集的表之前,必须建立聚集索引,且按聚集码进行索引;对于聚集中的多个表,聚集值只存储一次
劣势:聚集表的插入,更新,删除性能差,具体使用要权衡
查询优化
效率低下的SQL 语句常常是系统效率不佳的主要原因。常用优化方法如下:
(1)合理使用索引
权衡:索引提高查询效率,索引增加系统开销
建立索引原则:
1 是否为一个属性间索引:该属性是码或存在某个查询中被使用
2 在某些竖向建立索引:若一个关系的多个属性共同新出现在若干个查询中每一班会采用多属性索引
3 是够建立聚簇索引:聚簇缩影适合范围查询,可建立多属性索引。优点体现在数据记录存取过程中
4 使用散列还是树索引: 散列索引适合等值查询,关系数据库多使用B+索引,支持作为搜索吗的属性上的等值查询和范围查询
索引使用原则:
经常在查询中作为条件被使用的列,应为建立索引。
频繁进行排序或分组的列,应为其建立索引
一个列的值域很大是,应为其建立索引
如果待排列有多个,建符合索引
可以使用系统工具类检查完整性,必要时进行修复,当数据表更新大量数据后,删除并重建索引以提高查询
索引建立完成后,运行期间还需调优。调优的目的:动态的评估需求
索引调整和修改的原因:
由于缺少,某些查询语句执行时间过长
某些索引自始自终没有使用,却占用较多磁盘
某些索引建立在被频繁改变的属性上,导致系统开销过大
(2)避免和简化排序
ORED BY 和 GROUP BY 语句的执行设计排序,磁盘排序开销很大,应利用索引自动以适当的次序输出
影响优化器因素:
由于索引不足,导致偶爱徐索引中不包括一个或几个待排序的列
Group by 和 order by 字句中列的次序与索引次序不一致
排列的列来自不同大表
为避免不必要的排序,要正确地增索引,合理合并数据库表,如排序不可避免,则简化它,如缩小排序例的范围
(3)消除对大型表数据的顺序存取
嵌套查询,对表的顺序存取严重影响查询效率
优化方法:对连接列进行索引,或使用并集来避免顺序存取
(4)避免复杂的正则表达式
原因:消耗较多CPU 资源进行字符匹配
(5)使用临时表加速查询
将表的一个子集进行排序并创建临时表
(6)用排序来取代非顺序词磁盘存取
原因:非顺序磁盘存取最慢,使用以数据库排序功能以基础的SQL 替代非顺序存取
(7)不充分的连接条件
原因:左(右)外连接包含于null 数据匹配,相比内连接,代价可能更高
(8)存储过程
尽量使用自带赶回参数,而非自定义返回参数,减少不必要参数,避免数据冗余
(9)不随意使用游标
游标占用较多的系统资源,尤其是大规模并发情况下,很容易使得系统资源耗尽而崩溃
(10)事务处理
一旦将多个处理放入事务,会降低系统处理速度,将频繁操作的多个可分割的处理过程放入多个存储过程中这样就大大提高系统响应速度
SQL Server 性能工具
SQL Server profile
用来监视SQL Server 事件的多用途监控工具(性能,存储过程,T-SQL 语句运行等监控)。结果存储在一个跟踪文件中,可通过分析文件诊断问题
数据库引擎优化顾问
测试数据库工作负荷(一组在数据库中执行的T-SQL语句),给出优化建议