Error number: MY-011916; Symbol: ER_IB_MSG_91; SQLSTATE: HY000
Message: %s
Errno MY-011916, Symbol: ER_IB_MSG_91,SQLSTATE: HY000错误是InnoDB内存分配错误,是当某个MySQL实例试图分配更多内存以处理复杂查询时发生的。
错误说明
Errno MY-011916, Symbol: ER_IB_MSG_91,SQLSTATE: HY000错误表示InnoDB无法从操作系统中分配更多内存以处理查询或复杂缓存条目。错误信息还包括:“内存分配失败:请检查您的操作系统,是否有可用的内存”。
常见案例
这个错误经常发生在数据库遇到比较复杂的查询时,需要更多内存以处理,但操作系统却无法提供足够的内存。此外,这个问题还可以导致由于某些原因可用内存不足(例如使用swap或虚拟内存),而发生。
解决方法
一种解决方案是增加服务器的内存,以提高处理复杂查询的性能,并尽量减少使用swap或虚拟内存的可能性,从而避免InnoDB出现内存分配问题。
另一种方法是运行InnoDB校准脚本,这可以调整当前InnoDB参数以满足特定系统环境中特定情况的需要,这会使InnoDB能够更有效地使用可用内存,或更正由于任何原因而导致的任何内存问题。
另一种补救措施是在MySQL配置文件的my.cnf中增加一些硬核参数,以减少可能发生内存错误的可能性。这些参数包括:innodb_buffer_pool_size,max_heap_table_size,sort_buffer_size,tmp_table_size和join_buffer_size 等。