MST

星途 面试题库

面试题:PostgreSQL执行计划缓存机制的基本原理是什么

请简述PostgreSQL执行计划缓存机制的基本工作原理,包括何时缓存执行计划、如何识别可缓存的计划等方面。
13.5万 热度难度
数据库PostgreSQL

知识考点

AI 面试

面试题答案

一键面试

1. 何时缓存执行计划

  • 首次执行查询时:当PostgreSQL接收到一个SQL查询时,它会对该查询进行解析、分析和优化,生成执行计划。如果该查询满足可缓存条件,这个执行计划就会被缓存起来。例如,简单的SELECT语句,在首次执行优化后若符合条件就被缓存。
  • 后续相同查询:对于后续执行的相同查询(指SQL文本完全相同),PostgreSQL首先会检查查询缓存,若存在对应的缓存计划,则直接使用该计划执行查询,而无需重新进行解析、分析和优化等操作,从而提高查询执行效率。

2. 如何识别可缓存的计划

  • SQL文本一致性:最基本的条件是SQL文本必须完全相同。这意味着不仅关键字、表名、列名等拼写要一致,空格、注释等也必须完全一样。例如,SELECT * FROM users;SELECT * FROM users; 虽然逻辑相同,但由于空格不同,被视为不同的查询。
  • 无易失性函数:查询中不能包含易失性函数。易失性函数每次调用可能返回不同结果,例如 CURRENT_TIMESTAMP 这类获取当前时间的函数。若查询包含此类函数,执行计划无法缓存,因为每次执行结果可能不同。
  • 无绑定参数变化影响执行计划:如果查询使用了绑定参数(如 SELECT * FROM users WHERE age = $1;),只有当不同参数值不会导致执行计划发生本质变化时才可能缓存。例如,无论 $1 传入什么值,查询始终可以使用相同的索引策略和表连接方式,这种情况下计划可缓存。若不同参数值会导致索引选择或连接顺序改变,则计划不可缓存。