数据库管理166期 2024-03-29
数据库管理-第166期 来自于全球最强数据库性能优化团队的四大处方(20240329)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
国内某科技公司 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。
本周,有幸受邀报名参加了在Oracle成都办公室举行的RWP培训,这算是疫情后第一次参加Oracle原厂组织的培训,疫情前和疫情中也参加过,但是那时候由于还比较菜,听得云里雾里的。这次就不一样了,在有了一定基础之后,受益匪浅。
1 RWP
RWP,Real-World Performance Team简称,是Oracle中一个专注于性能优化团队(可以说是达到变态级别追求极致性能的一波人),目前该团队在中国有4人,隶属于售前部门(曾经隶属于开发部门,国外还是属于研发部门)。本次来给我们培训的是Cary总和Calvin老师:
::: hljs-center
(从左开始:我,Cary总,Calvin老师)
:::
RWP培训带来的各种优化相关的内容并不一定只能用于Oracle数据库,很多东西都是在数据库中通用的,本期就来讲一讲本次培训带来的数据库优化的四大处方。
2 四大处方
Constraints
Constraints,约束。虽然约束在很多情况下会影响相关表的DML性能,但是良好的约束条件可以帮助优化器生成更好的执行计划。
- 在JOIN KEY上使用NOT NULL约束
- 在维度表的JOIN KEY上使用主键(PRIMARY KEY)约束
- 在现实表的JOIN KEY上使用外键(FOREIGN KEY)约束
Data Types
Data Types,数据类型。
- 主键和外键列上的数据类型必须一致
- 主键和外键列上的数据类型精度必须一直
- 避免运行时的数据类型转换
Statistics
Statistics,统计信息。统计信息是优化器生产统计信息非常重要的一句,详情可以查看《数据库管理-第九十八期 统计信息是多么重要(20230812)》。
- 考虑数据倾斜
- 考虑表、列之间的相关性
- 不要单独依赖动态统计信息收集
- 考虑如何、何时收集统计信息
Partitioning
Partitioning,分区。分区可以有效的减少IO需求与关联数据。
- 通常为RANGE和INTERVEL
- 减少从事实表中提取的行数
- 提高可管理性
3 最终实现
通过上面四大处方,最终通过下面的方法实现性能的优化:
- 更好的基数估计
- 更好的执行计划
- 提供更多访问路径
- 优化器能够执行许多转换和优化(JOIN消除、物化视图重写、In-Memory聚合转换等)
- 分区修剪
总结
本期只是简单罗列了一下四大处方的基本概念,后面有机会详细的分析一下。
老规矩,知道写了些啥。