#1149·mysql

可配置的临时准备语句缓存

作者: CAFxX创建于 2020年8月19日更新于 2025年6月22日
标签thinking

这更多是一个功能建议,而不是其他任何东西(我本来会将其添加到 Wiki 中,但它是只读的):由于驱动程序在执行带有 `interpolateParams=false` 的查询时已经创建了临时准备语句,因此允许用户自愿选择让驱动程序动态缓存最常执行查询对应的最多可配置数量的自动创建的准备语句,这可能会很有用。默认情况下,此缓存将关闭,用户可以通过例如使用 DSN 参数 `cacheStatements=N` 来自愿选择,其中 N 是缓存中最多可保存的准备语句数。驱动程序内部会保留一个较大(但有限)的近似集,包含最常执行的查询,但只有前 N 条语句才有资格使对应的准备语句保存在缓存中。文档应明确说明 N 是每个连接的,因此此缓存在服务器上使用的总准备语句数最多可达到 `N*num_open_connections`,因此需要在客户端(`SetMaxOpenConns`)和服务器(`max_prepared_stmt_count`)上进行仔细配置。

内容来源: go-sql-driver/mysql