AnalyticDB for MySQL的PlanCache功能可以缓存SQL的执行计划,执行相同SQL Pattern语句时会使用缓存的执行计划,从而减少SQL的编译优化时间,提升系统的查询性能。本文介绍如何开启PlanCache功能以及PlanCache功能的使用示例。

前提条件

AnalyticDB for MySQL集群需同时满足以下条件:

  • 集群为数仓版企业版、基础版及湖仓版

  • 集群内核版本需为3.1.10.0及以上版本。

说明

查看企业版湖仓版集群的内核版本,请参见如何查看实例版本信息。如需升级内核版本,请联系技术支持。

背景信息

当查询的并发数很高时,SQL的编译优化时间会成为系统性能的瓶颈,PlanCache功能将SQL的执行计划缓存后,后续相关的SQL语句会直接使用缓存的执行计划,从而减少SQL的编译优化时间,提升系统的查询性能。

目前PlanCache功能仅适用于高并发点查场景,非点查场景不推荐使用。

开启或关闭PlanCache功能

PlanCache功能默认关闭,您可以通过下列命令开启或关闭PlanCache功能

  • 开启PlanCache功能:

    SET ADB_CONFIG O_SPC_SCOPE=POINT_QUERY;
  • 关闭PlanCache功能:

    SET ADB_CONFIG O_SPC_SCOPE=NONE;

使用示例

假设您有以下高并发点查请求:

SELECT * FROM tbl0 WHERE col0 = ?;
  1. 开启PlanCache功能,命令如下:

    SET ADB_CONFIG O_SPC_SCOPE=POINT_QUERY;
  2. 执行SQL查询语句,该语句的执行计划将被缓存:

    SELECT * FROM tbl0 WHERE col0 = 666;
  3. 执行相同SQL Pattern语句时,会自动使用步骤2缓存的执行计划,减少SQL编译优化时间:

    SELECT * FROM tbl0 WHERE col0 = 777;