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

继续阅读