开发者社区 > 数据库 > 关系型数据库 > 正文

PolarDB这种情况是不是一个死结?

我在 PolarDB 集群里添加了一个只读列存节点。alter table xxx COMMENT 'COLUMNAR=1'时发现锁表比较严重。无锁变更必须开启 binlog,开启 binlog 又会降低PolarDB 的写性能。PolarDB这种情况是不是一个死结?

展开
收起
三分钟热度的鱼 2024-03-13 21:58:55 29 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    PolarDB在添加只读列存节点并执行ALTER TABLE操作时出现锁表严重的情况并非死结。可以通过一些策略来优化和减轻锁表的问题:

    1. 优化DDL操作流程:了解PolarDB中DDL操作的过程,尤其是MDL(Metadata Lock)锁的获取和释放机制,有助于减少锁等待时间。
    2. 集群版本检查与升级:确保您的PolarDB集群版本满足特定要求,以便使用最新的性能优化特性。如果版本较旧,考虑升级以获得更好的并发控制和锁表处理能力。
    3. 监控锁情况:定期监控锁信息,利用PolarDB控制台提供的诊断工具分析锁状态,及时发现潜在的死锁问题并进行处理。
    4. 调整锁策略:根据业务需求和数据库的实际运行状况,调整锁策略,如减少长时间持有锁的操作,尽可能降低锁冲突的概率。
    5. 合理规划操作时间:尽量在业务低峰期进行表结构的变更操作,以减少对业务的影响。
    6. 分阶段执行DDL操作:如果可能,将DDL操作分解成多个小步骤,逐步迁移,避免一次性对整个表进行长时间的锁定。
    7. 评估使用其他工具:如果PolarDB自带工具不足以解决问题,可以考虑第三方的性能优化和诊断工具。
    8. 联系技术支持:如果自行解决困难,可以联系阿里云技术支持寻求专业的帮助。
    2024-03-14 13:50:16
    赞同 展开评论 打赏
  • 好像现在没有查询了,可以再试试加列呢
    可以看一下这个文档
    https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/how-to-handle-the-issue-that-mdls-cannot-be-obtained-for-ddl-operations?spm=a2c4g.11186623.0.0.73fa675cMrOXjX
    有查询可以先kill掉, 或试试抢占式DDL
    https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/preemptible-ddl?spm=a2c4g.11186623.0.0.63d94e03zw3vMl 此回答整理自钉群“PolarDB专家面对面 - HTAP(列存索引) ”

    2024-03-13 22:59:48
    赞同 展开评论 打赏

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载