iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL5.7 Online DDL
  • 803
分享到

MySQL5.7 Online DDL

2024-04-02 19:04:59 803人浏览 独家记忆
摘要

1. ALter table (5.7)     一般情况下,alter table  都会对原有的表做一个临时的副本拷贝,然后将所做的该表应用到副本,之后再将原表删除

1. ALter table (5.7)

    一般情况下,alter table  都会对原有的表做一个临时的副本拷贝,然后将所做的该表应用到副本,之后再将原表删除,rename 副本。在这个过程中,原表对外是可读的;但是对该表DML会被堵塞,直到alter 完成。

    The exception referred to earlier is that ALTER TABLE blocks reads (not just writes) at the point where

it is ready to install a new version of the table .frm file, discard the old file, and clear outdated table

structures from the table and table definition caches. At this point, it must acquire an exclusive lock. To

do so, it waits for current readers to finish, and blocks new reads (and writes). 

在 alter table读取块,安装新建的.frm 。丢弃就得文件和数据时,会加排它


下面操作一般不需要创建临时副本:

    1)ALTER TABLE tbl_name RENAME TO new_tbl_name without any other options ;

    2)只改变表的元数据而不改动数据时 :

        (1)列的重命名;

        (2)改变列的默认值;

        (3)对ENUM和SET列在成员列表最后添加列表(但是向具有8个成员的SET列添加成员会将所需的存储空间每个值从1个字节更改为2个字节;  在列表中间添加成员会导致现有成员重新编号,这些需要一个表副本。)

     3)表空间的丢弃和导入;

     4)索引重命名,添加和删除索引(for innodb and NDB)


2 Summary of Online Status for DDL Operations

MySQL5.7 Online DDL

(1)重命名列

    只改变列名而不改变列的属性,可以进行在线操作;

    对于修改外键所在的列,不能使用ALGoRITHM=COPY选项。

(2)改变VARCHAR 列的字符长度

    若原VARCHAR列定义的长度在0-255范围内,修改后也在该范围则可以使用ALGORITHM=INPLACE;

    若原VARCHAR列定义的长度在256以上,修改后也在该范围则也可以使用ALGORITHM=INPLACE;

    但是若从小于256范围变为大于256的范围,或者varchar列长度由大变小,则会进行表的副本拷贝。

  (3)下列操作,虽然进行表的副本拷贝但是依然支持DML

    • Adding, dropping, or reordering columns.

    • Adding or dropping a primary key.

    • Changing the ROW_FORMAT or KEY_BLOCK_SIZE properties for a table.

    • Changing the nullable status for a column.

    • OPTIMIZE TABLE

    • Rebuilding a table with the FORCE option

    • Rebuilding a table using a “null” ALTER TABLE ... ENGINE=INNODB statement

  注意:若需要进行表的副本拷贝,则表副本会临时在参数tmpdir 指定的路径下。任何DDL语句都会等待当前的事务结束才会开始执行,因为在DDL执行伊始和最后都短暂的加排他锁。

  虽然对于主键的修改需要做表的副本拷贝,但是使用ALGORITHM=INPLACE是被允许的,且比ALGORITHM=COPY的效率要高。因为ALGORITHM=INPLACE 不需要记录相应的undo和redo日志,二级索引已经存储好,可以顺序load,由于没有随机的二级索引插入所以也没使用到change buffer。

  (4)DDL操作是执行了 inplace 还是copy ,最直观的表现就是查看操作完成后的“rows affected”,如下:

MySQL5.7 Online DDL (5) 对于一个大表的操作,需要确认相应DDL执行的效率:

    1). Clone the table structure.

    2). Populate the cloned table with a tiny amount of data.

    3). Run the DDL operation on the cloned table.

    4). Check whether the “rows affected” value is zero or not. A non-zero value means the operation willrequire rebuilding the entire table, which might require special planning. For example, you might do the DDL operation during a period of scheduled downtime, or on each replication slave server one at a time.

For a deeper understanding of the reduction in Mysql processing, examine the performance_schema and INFORMATION_SCHEMA tables related to InnoDB before and after DDL operations, to see the number of physical reads, writes, memory allocations, and so on.


您可能感兴趣的文档:

--结束END--

本文标题: MySQL5.7 Online DDL

本文链接: https://www.lsjlt.com/news/46073.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【MySQL】Online DDL详解
    目录 前言一、分类二、Copy三、Inplace四、Instant五、一些补充六、总结 前言 一天,一位许久未见的澳同学,一见面先不是打招呼,直接给我当面一问 澳同学问我:小涛小涛,我这一...
    99+
    2023-08-31
    mysql 数据库 database
  • MySQL DDL执行方式Online DDL详解
    目录1 引言2 概述3 介绍4 用法5 两种算法第一种 Copy第二种 Inplace6 执行过程7 踩坑8 限制9 总结1 引言 一般来说MySQL分为DDL(定义)和DML(操作...
    99+
    2024-04-02
  • mysql之 openark-kit online ddl
    MySQL工具集openark-kit (官方网站 http://code.openark.org/forge/openark-kit),内部包含很多小工具,在5.6之前用于实现online ddl操作,本文以CentOS为操作系统,且默认...
    99+
    2023-06-06
  • Limitations of Online DDL for MySQL
    Take the following limitations into account when running online DDL operations: During...
    99+
    2024-04-02
  • online ddl 添加多个列
    pt-online-schema-change --user=root --password=root --defaults-file=/home/mysql/my6306.cnf --charset=ut...
    99+
    2024-04-02
  • MySQL online ddl工具之pt-online-schema-change怎么用
    这篇文章主要介绍MySQL online ddl工具之pt-online-schema-change怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL ddl 的问题现状...
    99+
    2024-04-02
  • MySQL ONLINE DDL和PT-ONLINE-SCHEMA-CHANGE有哪些区别
    这篇文章主要介绍“MySQL ONLINE DDL和PT-ONLINE-SCHEMA-CHANGE有哪些区别”,在日常操作中,相信很多人在MySQL ONLINE DDL和PT-ONLINE-SCHEMA-...
    99+
    2024-04-02
  • 怎么理解MySQL 5.7 Online DDL Overview
    这期内容当中小编将会给大家带来有关怎么理解MySQL 5.7 Online DDL Overview,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 ...
    99+
    2024-04-02
  • MySQL Online DDL知识点有哪些
    这篇文章主要介绍“MySQL Online DDL知识点有哪些”,在日常操作中,相信很多人在MySQL Online DDL知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 如何在Mysql中使用Online DDL
    本篇文章为大家展示了如何在Mysql中使用Online DDL,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。LOCK参数LOCK=NONE:允许并发的查询和DML操作LOCK=SHARED:允许并发...
    99+
    2023-06-15
  • MySql Online DDL操作记录详解
    目录一、环境二、执行过程分析三、遇到的问题四、工具尝试五、Online DDL 尝试一、环境 为支持用户账号删除功能,需要在 user 表上加一个字段 deleted。 数据库:mysql5.6 被 操作表 ...
    99+
    2022-12-20
    MySqlOnlineDDL操作 MySqlOnlineDDL
  • MySQL Online DDL(二)(r11笔记第88天)
    对于Online DDL,之前简单分析了一些场景MySQL中的Online DDL(第一篇)(r11笔记第3天),其实有一个很关键的点没提到,那就是online DDL的算法,目前有三个操作选项,def...
    99+
    2024-04-02
  • MySQL & MariaDB Online DDL的详解示例
    这篇文章主要介绍MySQL & MariaDB Online DDL的详解示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL教程栏目介绍指导MySQL & ...
    99+
    2024-04-02
  • MySQL Online DDL的实现细节介绍
     MySQL Online DDL的实现细节共分为三个阶段: Prepare阶段 1.创建临时frm文件 2.持有EXCLUSIVE-MDL锁,禁止读写 3.根据ALTER类型,确定执行方式(co...
    99+
    2024-04-02
  • MySQL 5.7 online DDL特性有什么优点
    这篇文章主要讲解了“MySQL 5.7 online DDL特性有什么优点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL 5.7 online D...
    99+
    2024-04-02
  • MySql Online DDL操作问题怎么解决
    本文小编为大家详细介绍“MySql Online DDL操作问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySql Online DDL操作问题怎么解决”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-07-04
  • MySQL5.6 Online DDL在线状态是怎么样的
    这篇文章将为大家详细讲解有关MySQL5.6 Online DDL在线状态是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Yes*和No*表明结...
    99+
    2024-04-02
  • ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些
    小编给大家分享一下ONLINE DDL INPLACE和COPY两种方式MDL锁的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了...
    99+
    2024-04-02
  • Mysql5.7卸载
    一、卸载Mysql5.7 step1:停止运行数据库 第一种:可以在图标栏中右击鼠标选择stop停止,这也是我经常用的方法 第二种:在桌面找到此电脑,右键点击管理, 打开计算机管理,在服务和应用程序中 ,点击服务,找到MySQL5.7,选...
    99+
    2023-09-05
    mysql 数据库 java
  • centos7安装mysql5.7
    系统环境:Centos7.4搭建步骤如下:1.首先进入本机的源文件目录[root@edu-mycat-01 ~]# cd /usr/local/src/2. 使用wget下载官方yum源的rpm包:[roo...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作