数据库管理-第六十一期 Exadata是否需要索引(20230314)

数据库管理 2023-03-14

  • 第六十一期 Exadata是否需要索引
    • 1 smart scan offload
    • 2 做一个测试
    • 3 结论
    • 总结

第六十一期 Exadata是否需要索引

这一期的灵感来自于之前协助一个业务处理的一个问题,因为索引确实造成了测试库一条语句大量的smart scan等待,该语句执行时间很长。众所周知,一体机的IO非常强,几乎可以算是无解的强大,其中还有smart scan offload技术可以在存储测加速结果输出。那么在一体机上到底还需要索引不呢?

1 smart scan offload

数据库管理-第六十一期 Exadata是否需要索引(20230314)_第1张图片
官方文档的通俗解释其实就是Exadata会现在存储侧预先筛选数据,减少传输到计算节点的数据,减少IO的量与延迟。当然smart scan offload还是有一些针对性的。

2 做一个测试

首先,借用一张生产表,900w+的数据量:
数据库管理-第六十一期 Exadata是否需要索引(20230314)_第2张图片
使用此表创建两个新表t1和t2:
在这里插入图片描述
在这里插入图片描述
同时在t1表创建一个主键:
在这里插入图片描述
为了避免因为统计信息和存储缓存带来的影响,对t1、t2表进行处理:
在这里插入图片描述
数据库管理-第六十一期 Exadata是否需要索引(20230314)_第3张图片
打开执行计划通过相同列(XXX_INFO_ID列,即t1表建立主键的列)进行查询:
数据库管理-第六十一期 Exadata是否需要索引(20230314)_第4张图片
数据库管理-第六十一期 Exadata是否需要索引(20230314)_第5张图片

3 结论

在消除各种影响的情况下,数据一致,统计信息都收集了,数据都缓存到flash card或PEME的情况下,两条语句仅仅因为一个主键的区别,但从执行时间来看,1s(其实不到)和15s之间至少15倍的差距就能说明问题,更不要说各种CPU、IO的操作消耗。当然如果没有加索引的情况换到普通X86+集中存储的环境,恐怕15s还跑不出结果。
即使强如一体机,在表设计上也是有很多可优化的地方,所以作为DBA(或者开发)千万不要过分依赖那些所谓强无敌的硬件资源,如同前面写过的“壮汉挤门”这个是靠单纯硬件解决不了的,而需要使用合理的技术、进行合理的逻辑设计才能解决的。曾几何时我也见到过一个笛卡尔积把4TB内存的HANA直接撑挂的故障。

总结

老规矩,知道写了些啥。

你可能感兴趣的:(Oracle,数据库)