数据建模
ODS是站在记录层面访问的角度而设计的 DW或DM则是站在结果集层面访问的角度而设计的 ODS支持快速的数据更新,DW作为一个整体是面向查询的
查询的事务
ODS中的事务操作比较多 可能一天中会不断的执行相同的事务 而DW中事务的到达是可以预测的
用途
ODS用于每一天的操作型决策 是一种短期的 DW可以获取一种长期的合作广泛的决策 ODS是策略型的,DW是战略型的。
用户
ODS主要用于策略型的用户 比如保险公司每天与客户交流的客服 DW主要用于战略型的用户,比如公司的高层管理人员
数据量(主要区别之一)
ODS只是包括当前数据 DW存储的是每一个主题的历史快照
OLTP与OLAP
- 数据处理分类
联机事务处理OLTP(on-line transaction processing) 联机分析处理OLAP(On-Line Analytical Processing) OLTP是传统的关系型数据库的主要应用 主要是基本的、日常的事务处理 例如银行交易 OLAP是数据仓库系统的主要应用 支持复杂的分析操作,侧重决策支持 并且提供直观易懂的查询结果 OLTP 系统强调数据库内存效率 强调内存各种指标的命令率,强调绑定变量,强调并发操作 OLAP 系统则强调数据分析 强调SQL执行市场,强调磁盘I/O,强调分区等
- OLTP与OLAP之间的比较
OLTP
事务性非常高的系统 一般都是高可用的在线系统 以小的事务以及小的查询为主 评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量 单个数据库每秒处理的Transaction往往超过几百个,或者是几千个 Select 语句的执行量每秒几千甚至几万个 典型的OLTP系统有电子商务系统、银行、证券等,如美国eBay的业务数据库
OLTP 瓶颈
CPU与磁盘子系统
CPU
表现在逻辑读总量与计算性函数
- 逻辑读总量
逻辑读总量等于单个语句的逻辑读乘以执行次数 如果单个语句执行速度虽然很快,但是执行次数非常多,也可能会导致很大的逻辑读总量
- 计算型的函数
如自定义函数、decode等的频繁使用 也会消耗大量的CPU时间,造成系统的负载升高 尽量避免计算过程,如保存计算结果到统计表
磁盘子系统
承载能力一般取决于它的IOPS处理能力 磁盘物理读一般都是db file sequential read(单块读) 读的次数非常频繁 如果频繁到磁盘子系统都不能承载其IOPS的时候,就会出现大的性能问题
OLTP设计和优化
Cache技术与B-tree索引技术
Cache技术
Cache决定了很多语句不需要从磁盘子系统获得数据 Web cache与Oracle data buffer对OLTP系统是很重要的
索引
语句越简单越好 这样执行计划也稳定 一定要使用绑定变量,减少语句解析,尽量减少表关联、尽量减少分布式事务 基本不使用分区技术、MV技术、并行技术及位图索引 因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生
在OLTP环境中使用位图索引很容易造成阻塞与死锁
- 绑定变量
用户并发数很大,用户的请求十分密集 并且这些请求的SQL 大多数是可以重复使用的
OLTP 系统是一个数据块变化非常频繁,SQL 语句提交非常频繁的系统