Oracle优化器:星型转换(Star Query Transformation )
来源:互联网 发布:线装书局 知乎 编辑:程序博客网 时间:2024/04/29 23:07
Star query是一个事实表(fact table)和一些维度表(dimension)的join。每个维度表都跟事实表通过主外键join,且每个维度表之间不join。
星型模式设计的好处:
1) 提供了直接、直观的业务实体与终端用户schema设计的映射。
2) 对典型的star query提供了高性能的优化。
3) 通过大量的商业智能工具的广泛支持,可能会期望甚至要求数据仓库架构包含维度表。
星型模式是用于简单的数据集市和大型数据仓库。
雪花状模式(snowflake schema):
Snowflake schema是star schema的一种,但更复杂。它的维度数据被分到多个表而不是一个大表。更多的维度表,更多的外键joins,使查询更复杂,查询性能下降。
Oracle建议使用star schema替代snowflake schema,除非你有别的原因。
优化Star Query:
1) 在fact table的每个外键列上建立bitmap index。
2) 初始化参数STAR_TRANSFORMATION_ENABLED 应被设为TRUE,默认false。
星型转换(Star transformation)能为star query提供高效的查询性能。
合适的情况下,Oracle会自动选择star transformation技术,隐视重写star query SQL,提高star query效率。
星型查询2个基本步骤:
1) 从fact table中检索出必要的结果集。(bitmap index会提高效率)
2) 结果集与维度表joins。
星型转换(bitmap index)
通过bitmap AND操作将3个维度表bitmaps为一个单独的bitmap,然后与fact table通过bitmap indexes逻辑JOIN。
SELECT ch.channel_class,
c.cust_city,
t.calendar_quarter_desc,
SUM(s.amount_sold) sales_amount
FROM sales s, times t, customers c, channels ch
WHERE s.time_id = t.time_id
AND s.cust_id = c.cust_id
AND s.channel_id = ch.channel_id
AND c.cust_state_province = 'CA' BY ch.channel_class, c.cust_city, t.calendar_quarter_desc;
星型转换(a Bitmap Join Index)
--建一个bitmap join index
CREATE INDEX sales_c_state_bjix ON sales(customers.cust_state_province)
FROM sales, customers
WHERE sales.cust_id = customers.cust_id
LOCAL COMPUTE<span color:navy;background:white;"="" style="word-wrap: break-word; font-size: 10pt;"> STATISTICS;
即使用bitmap join index代替与表customer的bitmap join。
星型转换的限制
1、 下面的情况不支持星型转换
? 查询中使用hint
? 查询包含绑定变量
? Fact table上的bitmap indexes太少
? 远程fact tables
? Anti-joined tables
? Fact table是一个unmerged view
? Fact table是一个partitioned view
2、 优化器不选择star transformation的情况
? 表有一个好的单表访问路径
? 表太小不值得转换
3、临时表在下面情况下不适用star transformation
? 数据库read-only模式
? Star query是串行事务的一部分
- Oracle优化器:星型转换(Star Query Transformation )
- SQL优化【基础09】 - 查询转换(query transformation)
- 数据库优化中什么是星型转换(Star Transform)
- Oracle优化器:星型转换
- Oracle优化——星型联结转换(star_transformation_enabled)
- Web.config 转换概览(Transformation Overview)
- Kettle之命令行执行转换(transformation)
- ####好#####DStream中的转换(transformation)
- 星型数据库(STAR Schema)
- Joiner transformation(2) 优化
- Lookup Transformation(2) 优化
- transformation XML 转换
- Oracle Star Schema
- Oracle star schema解释
- Oracle Star Schema简析
- Oracle Star Schema简析
- Oracle Parallel Query(OPQ)
- 预告 | SQL 优化之 transformation
- Detour开发包介绍(2):使用
- 励精图治---Concurrency---GUI设计
- Android ffmpeg编译
- [Leetcode]Wiggle Sort
- ORACLE网络管理
- Oracle优化器:星型转换(Star Query Transformation )
- java Struts2 框架的搭建与简单的登录验证
- OCP-V13-694
- 都有一颗破碎的心
- 如何在Mac上启动Windows
- NFS 监控和调优
- 性能优化——Android内存优化
- Centos 安装配置代理服务器软件Squid
- APP适配IOS8,iPhone6和Plus截图简要说明