iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL日常大表的DDL操作介绍
  • 171
分享到

MySQL日常大表的DDL操作介绍

2024-04-02 19:04:59 171人浏览 八月长安
摘要

这篇文章主要讲解了“Mysql日常大表的DDL操作介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql日常大表的DDL操作介绍”吧!大多数的alte

这篇文章主要讲解了“Mysql日常大表的DDL操作介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql日常大表的DDL操作介绍”吧!


大多数的alter table操作都会涉及lock-->copy to new table-->rename-->unlock的过程,表时间会很长,而且alter table 的process不可被kill,一旦执行就不可回退。
在Mysql5.5和之前版本,在运行的生产环境对大表(超过数百万纪录)执行Alter操作是一件很困难的事情。因为将重建表和锁表,影响用户者的使用。
从MySQL5.6开始,Online DDL特性被引进。他增强了很多种类的Alter Table操作避免拷贝表和锁表,在运行Alter操作的同时允许运行select,insert,update,delete语句。因此在最新版本,我 们可以通过使用ALGoRITHM和LOCK选项抑制文件拷贝和加锁。
但是即使在MySQL5.6,仍然有一些Alter操作(增加/删除列,增加/删除主键,改变数据类型等)需要重建表。

虽然mysql5.6对atler table操作有了很大改进,但仍有很多限制,并不建议直接在线上使用。如果线上有DDL的需求我们建议使用以下两种方式:
1、主从架构轮询修改
2、使用在线修改工具online-schema-change
对于第一种方式,使用的前提是,你的数据库架构是一个集群,如果不是,也就无所谓的轮询修改。修改的原理就是利用主从服务,在应用无感知的情况下,得到停机窗口,进行修改。
今天我们着重讲第二种方式,利用第三方工具实现在线大表的DDL操作。这种方式在alter操作更改表结构的时候不用锁定表,也就是说执行alter的时候不会阻塞写和读取操作。

工作原理:
创建一个和你要执行alter操作的表一样的空表结构,执行表结构修改,然后从原表中copy原始数据到表结构修改后的表,当数据copy完成以后就会将 原表移走,用新表代替原表,默认动作是将原表drop掉。在copy数据的过程中,任何在原表的更新操作都会更新到新表,因为这个工具在会在原表上创建触 发器,触发器会将在原表上更新的内容更新到新表。如果表中已经定义了触发器这个工具就不能工作了。

注意点:
1、操作的表必须有主键或唯一索引否则报错。
2、如果表有外键,除非使用 --alter-foreign-keys-method 指定特定的值,否则工具不予执行。
3、当业务量较大时,修改操作会等待没有数据修改后,执行最后的rename操作。因此,在修改表结构时,应该尽量选择在业务相对空闲时,至少修改表上的数据操作较低时,执行较为妥当。
4、由于可能存在一定的风险,在操作之前,建议对数据表进行备份,可以使得操作更安全、可靠。
5、当是主从环境,不在乎从的延迟,则需要加--recursion-method=none参数。当需要尽可能的对服务产生小的影响,则需要加上--max-load参数。

环境搭建:
安装依赖环境
##Install DBI
wget Http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz
tar -zxvf DBI-1.625.tar.gz
cd DBI-1.625
perl Makefile.PL
make
make install

##Install DBD::Mysql
wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.023.tar.gz
tar -zxvf DBD-mysql-4.023.tar.gz
cd DBD-mysql-4.023
perl Makefile.PL
make
make install

安装percona-toolkit:
##Install percona-toolkit
wget percona.com/get/percona-toolkit.tar.gz
tar -zxvf percona-toolkit-2.2.16.tar.gz
cd percona-toolkit-2.2.16
perl Makefile.PL
make
make install

常用操作:
添加字段
[root@rac1 bin]#  ./pt-online-schema-change -uroot  -pxxx --alter='add column col1_test int' --execute D=test,t=t_xxx_compensate
修改字段
[root@rac1 bin]# ./pt-online-schema-change  -uroot  -pxxx  --alter='MODIFY COLUMN col1_test TINYINT NOT NULL DEFAULT 0 ' --execute D=test,t=t_xxx_compensate              
改字段名
[root@rac1 bin]# ./pt-online-schema-change  -uroot  -pxxx  --alter='CHANGE COLUMN col1_test address varchar(30)' --execute D=test,t=t_xxx_compensate  
删除字段        
[root@rac1 bin]# ./pt-online-schema-change  -uroot  -pxxx  --alter='drop  column  address ' --execute D=test,t=t_xxx_compensate  
添加索引
[root@rac1 bin]# ./pt-online-schema-change -uroot  -pxxx --alter='add key indx_test(col1_test) ' --execute D=test,t=t_xxx_compensate
删除索引
[root@rac1 bin]# ./pt-online-schema-change -uroot  -pxxx --alter='DROP INDEX indx_test' --execute D=test,t=t_xxx_compensate

感谢各位的阅读,以上就是“MySQL日常大表的DDL操作介绍”的内容了,经过本文的学习后,相信大家对MySQL日常大表的DDL操作介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL日常大表的DDL操作介绍

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL日常大表的DDL操作介绍
    这篇文章主要讲解了“MySQL日常大表的DDL操作介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL日常大表的DDL操作介绍”吧!大多数的alte...
    99+
    2022-10-18
  • Mysql表的操作方法详细介绍
    目录创建表查看表结构修改表删除表创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 ...
    99+
    2022-11-13
  • Dbeaver的常用操作介绍
    这篇文章主要讲解了“Dbeaver的常用操作介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dbeaver的常用操作介绍”吧!dbeaver是免费和开源(...
    99+
    2022-10-18
  • mysql 查看表大小的方法介绍
    本文主要介绍了mysql 查看表大小的方法实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着微点阅读小编来一起学习学习吧 查看所有数据库容量大小 1 2 3 4 5 6 7 8 se...
    99+
    2023-09-06
    mysql 数据库 sql
  • C#中常用的IO操作介绍
    在.Net 4.0中增加了一系列较为实用的IO功能,下面让我们来一起看一下吧: 1. Stream.CopyTo Stream.CopyTo在用于较小的Stream之间的拷贝时还是比...
    99+
    2022-11-13
  • Python列表的基本操作介绍
    目录1、向List中添加元素的方法1.1 Python append()方法添加元素1.2 Python extend()方法添加元素1.3 Python insert()方法插入元...
    99+
    2022-11-12
  • 【MySQL】MySQL 数据库的介绍与操作
    目录 1. 登录 MySQL 数据库 2. MySQL 介绍 3. 操作数据库 1、创建数据库 2、删除数据库 3、插入数据 4、查找 5、修改数据库 4. 表的操作 1、创建表 2、查看表 3、修改表 4、删除表 写在最后: 1. 登...
    99+
    2023-08-31
    mysql
  • MYSQL的简单操作命令介绍
    这篇文章主要介绍“MYSQL的简单操作命令介绍”,在日常操作中,相信很多人在MYSQL的简单操作命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL的简单操作命令...
    99+
    2022-10-18
  • Python中关于列表的常规操作范例以及介绍
    目录1.列表的介绍 2.打印出列表的数据1.我们可以根据下标取值进行打印2.使用for循环遍历3.使用while循环遍历3.列表的添加操作1.append()方法2.extend()...
    99+
    2022-11-12
  • PHP常见的文件操作方式介绍
    这篇文章主要讲解了“PHP常见的文件操作方式介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP常见的文件操作方式介绍”吧!1.打开文件resource fopen ...
    99+
    2023-06-17
  • Mysql学习之创建和操作数据库及表DDL大全小白篇
    目录1.操作数据库 1.1创建数据库1.2查询数据库1.3修改数据库1.4删除数据库1.5使用数据库2.操作表2.1MySQL数据类型2.2创建表2.3查询表2.4删除表2...
    99+
    2022-11-12
  • MySQL库和表的操作(DDL) 和 数据增删改(DML)
    文章目录 💒创建和管理表🚏 基础知识🚀 一条数据存储的过程🚄 标识符命名规则🚒 MySQL中的数据类型 &...
    99+
    2023-09-01
    mysql sql java db sqlyong
  • python操作mysql数据库的方法介绍
    下面讲讲关于python操作mysql数据库的方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完python操作mysql数据库的方法这篇文章你一定会有所受益。 &n...
    99+
    2022-10-18
  • linux shell字符串内置的常用操作介绍
    本篇内容介绍了“linux shell字符串内置的常用操作介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在编写shell程序时,经常会涉...
    99+
    2023-06-09
  • MySQL常用的命令操作大全
    这篇文章主要介绍“MySQL常用的命令操作大全”,在日常操作中,相信很多人在MySQL常用的命令操作大全问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL常用的命令操作...
    99+
    2022-10-18
  • mysql时区的缩写以及相关操作介绍
    本篇内容介绍了“mysql时区的缩写以及相关操作介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、时区...
    99+
    2022-10-18
  • Python中字典的基础介绍及常用操作总结
    目录1.字典的介绍2.访问字典的值(一)根据键访问值(二)通过get()方法访问值3.修改字典的值4.添加字典的元素(键值对)5.删除字典的元素6.字典常见操作1.len 测量字典中...
    99+
    2022-11-12
  • Python中关于集合的介绍与常规操作解析
    目录1.集合的介绍2.访问集合的元素3.集合的添加4.集合的修改5.集合的删除1.使用remove方法2.使用pop方法3.使用discard方法6.集合的交集和并集1.交集2.并集...
    99+
    2022-11-12
  • Python中元组的基础介绍及常用操作总结
    目录1.元组的介绍2.访问元组3.修改元组(不可以修改的)4.元组的内置函数有count,index5.类型转换1.将元组转换为列表2.将元组转换为集合1.元组的介绍 Python...
    99+
    2022-11-12
  • Python全栈MySQL数据库基本操作的详细介绍
    下文给大家带来有关Python全栈MySQL数据库基本操作的详细内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完Python全栈MySQL数据库基本操作你一定会有...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作