当前位置: 首页 > news >正文

MariaDB10.3 增补AliSQL补丁---安全执行Online DDL

Online DDL从名字上看很容易误导新手,以为不论什么情况,修改表结构都不会锁表,理想很丰满,现实很骨感,注意这个坑!


有以下两种情况执行DDL操作会锁表的,Waiting for table metadata lock(元数据表锁)

1、增加、删除字段或索引不会锁全表,删除主键、更改字段属性会锁全表,见下图所示:图片.png


2、在添加字段alter table表时,对该表的增、删、改、查均不会锁表。而在这之前,该表有被访问时,需要等其执行完毕后,才可以执行alter table例如在会话一,故意执行一条大结果的查询,然后在会话二执行增加字段age,此时还会出现表锁,如下图所示:

图片.png


针对第二种情况,MariaDB10.3 增补AliSQL补丁-DDL FAST FAIL,让其DDL操作快速失败。

语法为:

ALTER TABLE tbl_name [WAIT n|NOWAIT] ...
CREATE ... INDEX ON tbl_name (index_col_name, ...) [WAIT n|NOWAIT] ...
DROP INDEX ... [WAIT n|NOWAIT]
DROP TABLE tbl_name [WAIT n|NOWAIT] ...
LOCK TABLE ... [WAIT n|NOWAIT]
OPTIMIZE TABLE tbl_name [WAIT n|NOWAIT]
RENAME TABLE tbl_name [WAIT n|NOWAIT] ...
SELECT ... FOR UPDATE [WAIT n|NOWAIT]
SELECT ... LOCK IN SHARE MODE [WAIT n|NOWAIT]
TRUNCATE TABLE tbl_name [WAIT n|NOWAIT]


例:

图片.png

如果线上有某个慢SQL对该表进行操作,可以使用WAIT n(以秒为单位设置等待)或NOWAIT在语句中显式设置锁等待超时,在这种情况下,如果无法获取锁,语句将立即失败。 WAIT 0相当于NOWAIT。


参考:https://jira.mariadb.org/browse/MDEV-11388





相关文章:

  • shell脚本中打印所有匹配某些关键字符的行或前后各N行
  • 数组遍历的方法(loop)
  • 18-10-11
  • clipboard.js无法复制粘贴
  • android SAF存储访问框架
  • Oracle SQL执行计划基线总结(SQL Plan Baseline)
  • php相关笔记
  • Scss 与 Sass 是什么,他们的区别在哪里?
  • adb connect命令连接多个Android设备
  • python(二) urllib2.URLError
  • nunit单元测试详解
  • c博客作业01--顺序、分支结构
  • 709. 转换成小写字母
  • Java : java基础(4) 线程
  • rdlc 分页操作和分页统计
  • JS 中的深拷贝与浅拷贝
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • JavaScript对象详解
  • Java多态
  • Java应用性能调优
  • passportjs 源码分析
  • Redis 中的布隆过滤器
  • 大数据与云计算学习:数据分析(二)
  • 复杂数据处理
  • 关于extract.autodesk.io的一些说明
  • 如何编写一个可升级的智能合约
  • 如何使用 JavaScript 解析 URL
  • 软件开发学习的5大技巧,你知道吗?
  • 三分钟教你同步 Visual Studio Code 设置
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 思维导图—你不知道的JavaScript中卷
  • 06-01 点餐小程序前台界面搭建
  • 白色的风信子
  • Java总结 - String - 这篇请使劲喷我
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (C++17) std算法之执行策略 execution
  • (floyd+补集) poj 3275
  • (function(){})()的分步解析
  • (差分)胡桃爱原石
  • (强烈推荐)移动端音视频从零到上手(上)
  • (一)RocketMQ初步认识
  • (转)Sql Server 保留几位小数的两种做法
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net 发送邮件
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net反混淆脱壳工具de4dot的使用
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /etc/skel 目录作用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @SentinelResource详解
  • @staticmethod和@classmethod的作用与区别
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798