当今的数据处理大致可以分成两大类:
OLTP(on-line transaction processing 在线事务处理,联机事务处理)
OLAP(On-Line Analytical Processing 在线分析处理,联机分析处理)
OLTP是传统的关系型数据库的主要应用模式,主要是基本的、日常的事务处理(插入、修改、查询和删除操作),例如银行交易、门票在线销售系统
系统强调数据库的内在效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作;
用户并发数很多,但只对数据库做很小的操作,数据库侧重于对用户操作的快速响应,这是对数据库最重要的性能要求。
对于OLTP来讲,数据库内存的设计显得很重要,如果数据库可以在内存中处理,那么数据库的性能无疑会提高很多。
内存的设计通常是通过调整Oracle和内存相关的初始化参数来实现的,比较重要的几个是内存相关的参数,包括SGA的大小(Data Buffer,Shared Pool)、PGA大小(排序区,Hash区等),
这些参一个OLTP系统里显得至关重要,OLTP系统是一个数据块变化非常频繁、SQL语句提交非常频繁的系统。
对于数据块来说,应尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL的重用,减少物理I/O和重复的SQL解析,能极大地改善数据库性能。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。主要是查询处理
系统强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区等。
用户并发数较少,内存可以优化的余地较小,甚至觉得增加CPU处理速度和磁盘I/O速度是最直接的提高数据库性能的方式方式,但这将意味着成本的增加。
实际上,用户对OLAP系统性能的期望远远没有对OLTP性能的期望那么高。在OLAP系统中,SQL的优化显得非常重要,分区技术在OLAP数据库中很重要。
下表列出OLTP和OLAP之间的比较
类型 OLTP OLAP
用户 操作人员,低层管理人员 决策人员,高级管理人员
功能 日常操作处理 分析决策,支持复杂的分析操作
DB设计 面向应用 面向主题
数据 当前的,最新的细节的,二维的分立的 历吏的,聚集的,多维的,集成的,统一的
存取 读/写数十条记录 读上百万条记录
工作单位 简单的事务 复杂的查询
DB大小 100MB-GB 100GB-TB
度量: 专注于日常时实操作以事务吞吐量为度量 以查询吞吐量和响应时间来度量
访问模式 短的原子事务,并发控制和恢复机制 大部份是只读操作,其中大部份是复杂查询
OLTP使用注意:
1. 最容易出现瓶颈常表现在CPU和磁盘子系统
1.1 CPU出现瓶颈表现在逻辑读总量(单个语句的逻辑读*执行次数)与计算性函数或过程上;
优化:减少单个语句的逻辑读,或减少执行次数
减少或优化函数和过程的使用,或保存计算结算到统计表
1.2 硬盘子系统的承载能力取决于IOPS处理能力;
优化:使用Cache技术(web cache与Oracle data buffer)与B-tree索引技术
使用绑定变量,达到SQL重用,减少语句重复解析、高度使用内存缓存,减少物理I/O;
减少表关联、减少分布式事务、不使用分区技术MV技术并行技术及位图索引,以达到快速提交目的。
热块优化(三种情况),数据块:分布不均匀导致;索引块:创建反向索引,重新分布数据;回滚段:增加回滚段数据块的数量;
OLAP使用注意:
磁盘子系统的吞吐量,数据量大,加大Cache基本没效果。
优化:
增加硬盘个数,加大带宽
使用分区技术、并行技术
大量使用位图索引,物化视图,
对于大量聚合SQL操作,可把优化器模式设置为all_rows
对于大量分页操作,设置为first_rows
Data Warehouse (数据仓库)
General Purpose (通用目的、一般用途)
定制数据库
数据仓库
个人对这些模板的理解为:
联机分析处理(OLAP,On-line Analytical Processing),数据量大,DML少。使用数据仓库模板
联机事务处理(OLTP,On-line Transaction Processing),数据量少,DML频繁。使用一般用途或事务处理模板
联机事务处理(OLTP,On-line Transaction Processing),DML操作频繁,并行事务处理多,但是一般都很短。
决策支持系统(DDS,Decision support system),典型的操作是全表扫描,长查询,长事务,但是一般事务的个数很少,往往是一个事务独占系统。
OLTP(on-line transaction processing 在线事务处理,联机事务处理)
OLAP(On-Line Analytical Processing 在线分析处理,联机分析处理)
OLTP是传统的关系型数据库的主要应用模式,主要是基本的、日常的事务处理(插入、修改、查询和删除操作),例如银行交易、门票在线销售系统
系统强调数据库的内在效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作;
用户并发数很多,但只对数据库做很小的操作,数据库侧重于对用户操作的快速响应,这是对数据库最重要的性能要求。
对于OLTP来讲,数据库内存的设计显得很重要,如果数据库可以在内存中处理,那么数据库的性能无疑会提高很多。
内存的设计通常是通过调整Oracle和内存相关的初始化参数来实现的,比较重要的几个是内存相关的参数,包括SGA的大小(Data Buffer,Shared Pool)、PGA大小(排序区,Hash区等),
这些参一个OLTP系统里显得至关重要,OLTP系统是一个数据块变化非常频繁、SQL语句提交非常频繁的系统。
对于数据块来说,应尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL的重用,减少物理I/O和重复的SQL解析,能极大地改善数据库性能。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。主要是查询处理
系统强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区等。
用户并发数较少,内存可以优化的余地较小,甚至觉得增加CPU处理速度和磁盘I/O速度是最直接的提高数据库性能的方式方式,但这将意味着成本的增加。
实际上,用户对OLAP系统性能的期望远远没有对OLTP性能的期望那么高。在OLAP系统中,SQL的优化显得非常重要,分区技术在OLAP数据库中很重要。
下表列出OLTP和OLAP之间的比较
类型 OLTP OLAP
用户 操作人员,低层管理人员 决策人员,高级管理人员
功能 日常操作处理 分析决策,支持复杂的分析操作
DB设计 面向应用 面向主题
数据 当前的,最新的细节的,二维的分立的 历吏的,聚集的,多维的,集成的,统一的
存取 读/写数十条记录 读上百万条记录
工作单位 简单的事务 复杂的查询
DB大小 100MB-GB 100GB-TB
度量: 专注于日常时实操作以事务吞吐量为度量 以查询吞吐量和响应时间来度量
访问模式 短的原子事务,并发控制和恢复机制 大部份是只读操作,其中大部份是复杂查询
OLTP使用注意:
1. 最容易出现瓶颈常表现在CPU和磁盘子系统
1.1 CPU出现瓶颈表现在逻辑读总量(单个语句的逻辑读*执行次数)与计算性函数或过程上;
优化:减少单个语句的逻辑读,或减少执行次数
减少或优化函数和过程的使用,或保存计算结算到统计表
1.2 硬盘子系统的承载能力取决于IOPS处理能力;
优化:使用Cache技术(web cache与Oracle data buffer)与B-tree索引技术
使用绑定变量,达到SQL重用,减少语句重复解析、高度使用内存缓存,减少物理I/O;
减少表关联、减少分布式事务、不使用分区技术MV技术并行技术及位图索引,以达到快速提交目的。
热块优化(三种情况),数据块:分布不均匀导致;索引块:创建反向索引,重新分布数据;回滚段:增加回滚段数据块的数量;
OLAP使用注意:
磁盘子系统的吞吐量,数据量大,加大Cache基本没效果。
优化:
增加硬盘个数,加大带宽
使用分区技术、并行技术
大量使用位图索引,物化视图,
对于大量聚合SQL操作,可把优化器模式设置为all_rows
对于大量分页操作,设置为first_rows
SQL优化很重要,全表扫描和索引对性能来说差异很大。
Data Warehouse (数据仓库)
General Purpose (通用目的、一般用途)
New Database
Transaction Processing (事务处理)
Oracle 11g的版本建库过程中可供选择的模板有:
一般用途或事务处理定制数据库
数据仓库
个人对这些模板的理解为:
联机分析处理(OLAP,On-line Analytical Processing),数据量大,DML少。使用数据仓库模板
联机事务处理(OLTP,On-line Transaction Processing),数据量少,DML频繁。使用一般用途或事务处理模板
联机事务处理(OLTP,On-line Transaction Processing),DML操作频繁,并行事务处理多,但是一般都很短。
决策支持系统(DDS,Decision support system),典型的操作是全表扫描,长查询,长事务,但是一般事务的个数很少,往往是一个事务独占系统。