MySQL Error number: MY-010609; Symbol: ER_NDB_OOM_GET_NDB_BLOBS_VALUE; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-010609; Symbol: ER_NDB_OOM_GET_NDB_BLOBS_VALUE; SQLSTATE: HY000
Message: get_ndb_blobs_value: my_malloc(%u) failed
Error number: MY-010609; Symbol: ER_NDB_OOM_GET_NDB_BLOBS_VALUE; SQLSTATE: HY000
错误说明:
MY-010609 错误表示在MySQL数据库中某 FRM 文件尝试分配不足的内存时运行。
该错误与MySQL NDB节点相关,即MySQL NoSQL接口。从字面上看,这个错误表明尝试获取NDB大对象值时内存不足,多数情况下是由于图像字段或BLOB数据类型引起的,Ndb Blob字段有更多受支持,而大型字段可中断服务,或者客户端可能显示“Out of memory”错误。
常见案例
此错误的最常见情况是在插入大型BLOB字段的数据到Ndb表中时发生。其中,BLOB字段大小必须在1 MB和4 KB之间,任何超过此范围的大型BLOB字段数据都可能会引发此错误。它也可能在执行SELECT查询中的的开始时产生,在这种情况下,由于未知的内部原因没有及时清除缓存,缓存已用完而未重置,即不足以存储查询数据。
解决方法:
可能最常见的解决方法是重新调整每个节点上的缓存大小设置,以确保服务器上的缓存空间足以存储查询(尤其是大型查询)的数据。如果该问题是插入大型BLOB数据引起的,则请考虑将这些BLOB数据块拆分为小数据块,以便逐步写入数据库中。另外,对于大型查询,可以试着更改MySQL配置文件中的一些参数,例如最大文件句柄ローリング缓存,这将使查询执行更有效率,同时减少缓存用量。