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 = ?;
开启PlanCache功能,命令如下:
SET ADB_CONFIG O_SPC_SCOPE=POINT_QUERY;
执行SQL查询语句,该语句的执行计划将被缓存:
SELECT * FROM tbl0 WHERE col0 = 666;
执行相同SQL Pattern语句时,会自动使用步骤2缓存的执行计划,减少SQL编译优化时间:
SELECT * FROM tbl0 WHERE col0 = 777;