自打2003掉进某公司的DB维护项目组,到今天断断续续接触Oracle已经是十年了。尽管它依然是数一数二的RDBMS,但Oracle数据库在我这里的声望始终是仇恨。这次遇到的性能调试如下:
一个业务表,数据级别在千万行,检索条件只有一个业务年月字段,但是有多达十个的group by,且掺杂了roll_up及cube。客户要调优建议。
SQL文很简单,select where group by连个结合都没,索引也建了一大票。一方面受限于时间,环境和...一些因素,另一方面还是因为有趣,仅仅尝试了下面两个方向。
==============
= 并行
------------------
测试数据量较小,只找到个百万级别的,也贴了索引。
本地跑下SQL,只有大概10秒左右。
试着尝试并行,根本没变化!
尝试改变条件,估计是由于目标数据量的缘故,从index range scan变成了table access full。
再次尝试并行,有用了。并行度设置成3(本地虚拟机只4核)时,从120秒降到60秒。
SELECT /*+ parallel(tbl, 3) */ ... from tbl
尝试增加并行度,
- 4的时候最优。
- 6的时候开始下降。
听那老爷机发出的种种奇怪的呻吟声,想来是资源到了极限。
==============
= bitmap index
------------------
由于业务字段是年月,按道理讲基数(cardinality)应该比较小。5年共60个月除以千万,应该适合bitmap才对。
但加上后,效果不理想。结果如下
1. 只加bitmap —— 110秒加。
2. 只并行(度=4) —— 55秒加。
3. 并行 + bitmap —— 75秒加。
4. 无 —— 115秒加
查了下测试数据,百万条的测试数据里有150+的年月,按理讲基数也不大。可是效果如上,不给力!
我估摸着性能开销不在检索数据上,而是在统计上的缘故。
去掉统计,只留下检索时,并行就慢于bitmap。
除了上述的简单优化外,还提了些架构方面的建议,不过那是另个话题了。
注:这测试是在PC机上跑的VM进行的,差不多也就只能做个参考。
注:这两个功能都是需要企业版。正如M大人所言,一方面讨厌Oracle,一方面还研究昂贵的企业版。真.矫情!
相关推荐
索引是提高查询速度的关键,B树索引、位图索引和反向索引是Oracle常用的索引类型。 4. **事务管理**:Oracle提供了强大的事务处理能力,确保了数据的一致性和可靠性。ACID(原子性、一致性、隔离性、持久性)特性是...
Oracle提供了B树索引、位图索引等多种类型,新的索引类型如函数索引和物化视图索引等提供了更灵活的选择。通过DBA_IND_COLUMNS等视图可以查看索引的详细信息。 八、SQL优化 SQL查询优化是提升数据库性能的重点。...
8. **索引**:理解索引的作用,创建B树索引、位图索引,以及何时优化索引使用。 9. **游标**:在PL/SQL中,游标用于逐行处理查询结果,学习声明、打开、读取和关闭游标的步骤。 10. **事务管理**:掌握COMMIT、...
王重东可能探讨了不同类型的索引(如位图索引、组合索引、函数索引)以及索引压缩、聚簇因子、索引与min/max函数等高级主题。 12. **系统管理工具** 王重东可能介绍了如何使用JDBC优化表连接,服务器端语句缓存,...
Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等。你可以使用CREATE INDEX语句创建索引,并用DROP INDEX删除索引。 六、视图 视图是虚拟表,基于一个或多个表的查询结果。创建视图可以简化复杂的查询,...
总结来说,"Oracle学习笔记"涵盖了Oracle数据库的核心概念和技术,包括优化查询性能的索引、过程编程的PL/SQL、数据安全与恢复的RMAN,以及高效管理大数据的分区技术和集合函数。这些都是Oracle数据库管理员和开发...
Oracle提供了多种类型的索引,如B树索引、位图索引、函数索引等,理解它们的适用场景和优缺点对于优化数据库性能至关重要。 此外,Oracle还包含了许多高级特性,如分区、物质化视图、物化 join、并行执行、数据库...
5. **索引**:索引能提高查询性能,有B树索引、位图索引、函数索引等,创建和管理索引是优化数据库性能的重要环节。 6. **视图**:视图是虚拟表,基于一个或多个表的查询结果,可以提供安全性、简化复杂的查询和...
B树索引、位图索引和函数索引是常见的索引类型,每种都有其适用场景。 4. **PL/SQL**:Oracle的编程语言,结合了SQL和过程编程。通过PL/SQL,可以编写存储过程、触发器、游标等,实现复杂的业务逻辑和数据库操作。 ...
6. **索引与视图**:索引可以提高查询效率,笔记会解释如何创建和管理B树索引、位图索引等。视图是虚拟表,通过SELECT语句定义,提供数据的另一种访问方式。 7. **权限与角色**:Oracle数据库有严格的权限管理系统...
Oracle笔记涵盖了数据库管理、SQL查询、表空间管理、索引优化、存储过程、触发器、事务与并发控制、备份与恢复、性能调优等多个方面的内容。以下是对这些知识点的详细阐述: 1. **数据库管理**:Oracle数据库是企业...
B树索引、位图索引、函数索引等各有适用场景,根据业务需求选择合适的索引类型至关重要。 5. 触发器与存储过程:触发器在满足特定条件时自动执行,常用于实现业务规则;存储过程是预编译的SQL语句集合,可以提高...
5. **索引与性能优化**:索引可以加速查询,笔记会解释B树索引、位图索引、唯一索引和非唯一索引的区别,以及如何通过索引来优化查询性能。 6. **视图与物化视图**:视图是虚拟表,而物化视图是预计算的结果,它们...
索引是提高查询性能的关键,有B树索引、位图索引、函数索引等多种类型,根据数据分布和查询模式选择合适的索引类型至关重要。 4. **PL/SQL**:Oracle特有的过程化语言,结合了SQL的功能,用于编写存储过程、函数、...
索引章节会探讨如何利用索引提高数据检索的速度,以及Oracle支持的索引类型,包括位图索引和函数式索引等。 序列和同义词在Oracle数据库中用于生成序列值和为数据库对象创建别名,这在数据管理和访问时提供了方便。...
手册中还详细讲解了索引的创建语法和特点,如不同类型的索引(B树索引、位图索引)以及它们的使用场景。在索引的使用上,作者指出了诸如不等操作符、使用ISNULL或ISNOTNULL、应用函数、比较不匹配的数据类型等限制...
Oracle数据库的学习涵盖了多个方面,包括基础概念、SQL语法、表和索引的管理、存储结构、数据库安全、备份恢复以及性能优化等。 1. **基础概念**:了解Oracle数据库的基本架构,如服务器进程、内存结构(SGA和PGA)...
- 数据的物理存储结构,如B树、位图索引、簇和非簇索引等。 - 内存管理,包括缓冲区缓存和磁盘I/O策略,以优化数据访问速度。 5. **事务处理**和**并发控制与恢复** - 事务的ACID属性(原子性、一致性、隔离性和...