复现。
SWIRL:通过强化学习进行关注负载的索引选择
knowledge
主要工作
- 通过强化学习建模索引选举问题。
- 未知工作负载的泛化能力。
- 通过无效动作屏蔽,在准备阶段实现数千种索引候选方案的高效训练。
- 和现有sota比较。
文章关注二级secondary索引。
旨在弥合两类算法之间的差距:一类是识别接近最优配置的算法,另一类是快速确定解决方案的算法。
结果评估标准
基准:
- TPC-H
- TPC-DS
- Join-Order-Benchmark(from IMDB)
比较的指标(综合场景固定负载大小;单一场景改变负载大小):
- 工作负载(百分比,对比无索引时的成本)
- 选择时间(生成优化索引配置所需时间)
(3. 无效动作屏蔽对有效动作数量的影响)
复现
配置:Python 3.7 PostgreSQL 12.5
protobuf一直版本出问题,只能直接使用python编译。
注意:使用的虚拟索引Hypopg中,文章实验之后list_index
由function
更新为view
处理方法:拉取更新之前的commit重新编译,在Postgres中手动添加extension。
文章只提供了一个gym_db
,是TPC-H基准测试的workload。提了issue也没消息。不过够用了。