我从 mysql 收到以下错误:
Can\'t create more than max_prepared_stmt_count statements (current value: 16382)
我现在已将价值增加到最大值(100 万)。
我正在使用node-mysql2
,但我认为无论我准备好的语句计数最终会达到 1M。
所以我的问题是我应该如何正确地回收这些语句,以便它们不会每隔几周就不断达到 1M?
另外,如果我达到这个 1M 标记,我该如何清除这个缓存?
我的node/mysql2代码如下:
import mysql from 'mysql2/promise'
const pool = mysql.createPool({ host, port, connectionLimit: 100 })
export default pool
然后,我在任何地方都使用准备好的语句 a la 的池:
pool.execute('SELECT * FROM ... etc etc')
我猜想持有 100 个连接并重用它们会导致准备好的语句最终达到最大值。我在 node/mysql2 中看到一个未记录的功能,说maxPreparedStatements
我可以添加到配置中。这会防止将来出现这个问题吗?还是我仍然需要不时在mysql中“清除准备好的语句”(如果是这种情况,清除它的命令是什么)?
注意我有 3 个连接到 mysql 的副本服务器