开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2700人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 )(1 2 3 4 5 6群均已爆满,新人进7群400,8群,9群)
PolarDB 不能光是介绍,咱们也的有点实际的,证明你用过。我写了3年的PolarDB 最近发现同盟者越来越多,开始使用这个数据库的人和同学都在问我问题,本着知无不言,分享点也掉不了一块肉的宗旨,越写越明白,大不了我不还有POLARDB 的后花园们。
这次是一个生产上的问题,使用POALRDB的用户会遇到,问题先描述一下:
早上开发找我,问添加字段的时候卡主了,通过集成的平台对一堆的表添加字段,然后有的过去了,有的等了有10多分钟还没有过去,过来问我怎么回事。
我其实对于一些不好学,或者说过一次还不长记性的人通常是没有好脾气的,要不叫我刺头刘。我数落了他一顿,但问题还是要分析的,这里也给开始使用POLARDB的同学提一个醒。
这是一张简易的POLARDB-M的结构图,其中可以看到存储就只有一个,那么这说明一个问题,主库和从库的数据同步的部分那根本就不可能和BINLOG有半毛钱的关系。

且数据同步是通过REDO LOG 进行的同步,因为数据只在一个存储上,那么这就出现了一个问题,关于数据多版本和数据读取时的数据MVCC的问题。下面这张图可以清晰的看到,数据通过REDO LOG 复制到了从库,一些数据也会从存储直接提取到从库的内存中,完整主从复制的数据一致性。

这里就有一个问题,关于从库,从库要对内存中的数据进行刷新,但此时你的读写节点是分离的,那么从库的节点读取什么数据是自己的事情,比如他有一个大事务,读取时的数据snapshot,而你要刷新当前的从库的内存中的数据,这矛盾就出来了。
从库到底是刷新还是不刷新,刷新内存了,当前读取的数据没有了,但如果不刷新,REDO的日志同步的部分就需要等待进行刷新。这是一个问题,这部分的DML数据的解决方案我之前在白皮书上有写,还有POLARDB的优化过程(POALRDB 数据库程序的优化)。
今天就说DDL的问题,在给出了一个解决的方案: PolarDB MySQL版8.0.1版本且Revision version为8.0.1.1.29及以上,以及8.0.2.2.12版本
首先先确认你的数据库版本是不是以上的版本,8.01.1.29 或者8.02.2.12 版本
然后咱们有4个参数 loose_polar_nonblock_ddl_mode
第一个参数,默认是关闭的状态,咱们需要打开这个参数,这个参数开启了 非阻塞 DDL(Non-blocking DDL)模式。当该模式启用时,POLARDB 会尝试以一种更智能的方式执行 DDL 操作,从而减少对数据库其他操作(尤其是 DML 操作)的阻塞影响。
loose_polar_nonblock_ddl_lock_wait_timeout
第二个参数,默认是1 单位秒,这里参数是进行DDL 时发现有MDL-X锁时多长时间算做超时,这个参数可以适当调整大一些,比如你的数据库服务器经常从库在进行OLAP的工作。
loose_polar_nonblock_ddl_retry_times 第三个参数,这个参数指定了在 获取 MDL-X 锁(元数据锁排它锁)时的 最大重试次数。这个部分不能设置的太大,太大会导致长时间的重试。
loose_polar_nonblock_ddl_retry_interval
第四个参数,此参数设置了 获取 MDL 锁超时重试的时间间隔。如果获取 MDL 排它锁失败,POLARDB 会在此时间间隔后再次尝试,单位秒。
最后这里给使用POLARDB-MySQL的同学一个调节的案例
innodb_bulk_load_page_grained_redo_enable = on (玩PolarDB的都知道)
这个参数会极大的优化polardb-M 下的DDL的性能,开与不开性能相差,官方显示。3-10倍的差距。
loose_polar_nonblock_ddl_mode = on
这个没有说的必须打开,后续的参数才能生效
loose_polar_slave_work_on_nonblock_mdl = on
这个参数也需要打开,让从库也在nonblock_mdl的模式
loose_polar_nonblock_ddl_lock_wait_timeout
这个参数是获取MDL锁时最大的等待时间,这个数值是秒,这里我设置的是1秒
loose_polar_nonblock_ddl_retry_times = 4194304
这个参数是在无法获得MDL锁时可以重试的次数,以上数值为官方建议的
loose_polar_nonblock_ddl_retry_interval = 3
这个参数是或许MDL锁超时重试的间隔,失败等待3秒重试 默认值6
通过调整参数后,可以解决或缓解在一些POALRDB FOR MYSQL 上把POLARDB 当OLAP 数据库使用的方式式还要在业务时间里面对字段进行操作的行为。
官方文档: https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/nonblocking-ddl-statements?spm=a2c4g.11186623.0.i2
PolarDB 相关文章
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人
PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)
PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)
PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless
POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PolarDB 从节点Down机后,引起的主从节点强一致的争论
PolarDB serverless 真敢搞,你出圈了你知道吗!!!!
PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
PolarDB for PostgreSQL 有意思吗?有意思呀
PolarDB Serverless POC测试中有没有坑与发现的疑问
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
POLARDB -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
临时工访谈系列
国内最大IT服务公司-招聘DBA “招聘广告”的变化--分析与探讨
OceanBase 相关文章
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
数据库信息速递 阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)
PostgreSQL 相关文章
PostgreSQL 什么都能存,什么都能塞 --- 你能成熟一点吗?
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
PostgreSQL 字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL 玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)
SQL SERVER 系列
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 我没有消失,SQL SERVER下一个版本是2025 (功能领先大多数数据库)
SQL SERVER 2022 针对缓存扫描和Query Store 的进步,可以考虑进行版本升级
MongoDB 相关文章
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)
MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本
MongoDB 挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 双机热备那篇文章是 “毒”
MongoDB 会丢数据吗?在次补刀MongoDB 双机热备
MONGODB ---- Austindatabases 历年文章合集
MySQL相关文章
"DBA 是个der" 吵出MySQL主键问题多种解决方案
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL --Austindatabases 历年文章合集
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
截止今天共发布1283篇文章