场景描述
MySQL当用户大批量进行并发读写、sql插入或者进行数据迁移等需要SQL预编译的情况下,报如下缓存的预编译SQL数量超过默认最大值:
mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (current value: 16382)
故障分析
max_prepared_stmt_count参数限制了同一时间在mysqld上所有session中prepared语句的上限。它的取值范围为"0-1048576",默认为16382。
mysql对于超出max_prepared_stmt_count的prepare语句就会报1461的错误。
解决方案
适当调大max_prepared_stmt_count参数的取值,建议调整为"65535" 。
可以通过控制台修改参数模板,或提交工单咨询。