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 将无效。
🏷️