接上一篇的特性可行性测试后,想着如果这个特性可以接入客户的生产系统进行测试,那将非常好的验证这个特性是否好用,但是19c毕竟太新,客户是不会同意跑生产的。想到客户做新系统上线的时候,压力测试一般会选择swingbench来做。所以本次测试,用swingbench来验证一下这个特性。
swingbench在生成数据的时候,除了生成表数据之外,还会创建索引。如果在生成数据的时候,只生成数据和表的PK,而不生成表的其他索引,这种情况下跑一下swingbench的DML和DQL测试,然后打开数据库的automatic indexing特性,再跑一下压力测试,观察一段时间后,是否会自动生成索引,对比两次结果。我想,是有一点说服力的。
为了简单测试,只生成了1G的数据。4个并发用户,其他参数默认。
生成数据之后,SOE用户下一共有9个索引:
开始压测一段时间后,TPM如下:
可以看到,TPM大概2200到2300左右。一笔记本虚拟机跑出来这个成绩不错了。
然后打开数据库的Aoto indexing特性:
Oracle PL/SQL
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
1
EXECDBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
之后,继续压测:
对比明显
在数据库开始进行分析和创建索引的时候,这上升的曲线让人感动。
查看索引情况:
可以看到,Automatic indexing为SOE用户创建了8个索引,最终TMP大概在8400到8600之间, 对比之前,可以看到有三到四倍的性能提升。
虽然看起来不是及时上百倍的提升,但是实际上在这么小的模型下有这个成绩已经非常厉害了,主要是根本不用DBA去思考怎么创建索引。
DBA的价值,以后会越来越体现在极端场景下的优化了,可能是10%?1%?