Polyjuice:通过并发控制动态学习实现高性能事务
💡
原文中文,约3400字,阅读约需9分钟。
📝
内容提要
Polyjuice是为单节点多核设置而设计的并发控制算法,使用进化式强化学习和离线训练来搜索细粒度操作的策略空间,以提高吞吐量。Polyjuice在中度竞争和重度竞争工作负载下表现良好,可以提高高争用和中争用下的吞吐量。
🎯
关键要点
- Polyjuice 是为单节点多核设置设计的并发控制算法。
- Polyjuice 使用进化式强化学习和离线训练来搜索细粒度操作的策略空间,以提高吞吐量。
- Polyjuice 在中度竞争和重度竞争工作负载下表现良好,能够提高吞吐量。
- Polyjuice 假设所有事务类型事先已知,并可作为存储过程运行。
- Polyjuice 不支持 MVCC,基于 Silo 框架实现。
- Polyjuice 在 TPC-C 和 TPC-E 的不同配置下,吞吐量比现有最佳算法高 15% 至 56%。
- Polyjuice 设计的策略参数主要分为读取控制策略、写入控制策略和交易验证政策。
- Polyjuice 使用 Silo 的验证/提交算法,确保正确性并专注于性能提升。
- Polyjuice 存储最新提交的数据和每个对象的访问列表,以支持并发运行的工作线程池。
- 策略表的局限性在于假设每种事务类型都是预先知道的。
- 训练策略表通过进化式强化学习方法进行,经过多次迭代测试和变异。
- Polyjuice 在中度竞争工作负载下性能提高了 19%,在高度竞争情况下提高了 45%。
- 在低争用情况下,Polyjuice 的性能不如 Silo 和 Cormcc。
- 没有一种适用于所有工作负载的最高算法,Polyjuice 接近这一目标。
- 如果工作负载变化太快或没有模式,Polyjuice 将无效。
➡️