YashanDB |报错 no free block in dictionary cache? 共享集群中的卡顿真凶找到了
【问题描述】
在 YashanDB 共享集群环境下,出现以下问题:
创建用户、表时卡住不动
查询视图或表时报错:no free block in dictionary cache

【风险影响】

【影响版本】
23.2.7.100 及以下所有版本
【问题根因】
YashanDB 使用 Dictionary Cache(DC)管理表、视图等元数据信息。当:
DC 空间不足
某表 DC 长时间占用未释放(ref_count > 0)
就会导致系统报错 no free block in dictionary cache 或出现严重卡顿。
【处理方法】
方法一:尝试释放 Shared Pool(无需重启)
复制代码
若共享池中仍有可用空间,此操作可立即缓解 DC 空间不足问题;
如操作有效,推荐定期在低峰时段执行。
方法二:调整内存参数(需重启)
增加共享池大小:
复制代码
优化 SQL / DC 子池占比:
复制代码
两者之和建议不超过 100%,避免因配置错误无法启动。

【排查思路】
1. 查看日志(alert.log)
出现 dictionary cache no free block 类报错时可作为初步判断依据。
2. 查看共享池资源分布:
复制代码
3. 检查 DC 占用与引用情况:
复制代码
REF_COUNT=0 的 DC 项可被释放,反之则会长期占用空间。
4. 查看统计信息更新时间:
复制代码
如存在大量未分析表,也可能加剧 DC 占用。

【经验总结】

评论