首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏大数据知识

    MySQL数据库DDL结构操作

    结构操作1. 数据的修改(ALTER)修改表语法如下:ALTER TABLE 名 操作;2.1 向现有中添加列在结构已经确定后, 如果想要增加一列可以使用下面语句进行更改:#在课程基础上添加gradeId 列ALTER TABLE subject ADD gradeId int;2.2 修改中的列在结构确定后,有的时候字段长度定的短了,可以用下面语句更改字段类型和长度:#修改课程中课程名称长度为10 结语最后,我们对本文核心要点进行总结:本节中主要学习的是DDL中的结构的操作其中创建表语句, 删除表语句比较重要。 修改结构语句一般使用较少,因为结构设计创建后一般很少变动, 如果变动那么项目代码也会随之变动, 这样成本太高。

    4.5K10编辑于 2023-04-14
  • 来自专栏张戈的专栏

    gh-ost:在线DDL修改MySQL结构工具

    在之前,我分享过一次 pt-online-schema-change 在线 DDL 的工具实践记录,在实际使用过程中,发现部门的很多老系统大量使用了触发器,从而无法使用这个工具,非常遗憾! 导致很多 DDL 变更都必须压到空闲时候做,比如凌晨,非常苦逼。 可测试 读取二进制文件内容的操作完全不会增加主库的负载,在从库上做修改结构的操作也和在主库上做是非常相象的(当然并不完全一样,但主要来说还是差不多的)。 gh-ost 自带了--test-on-replica 选项来支持测试功能,它允许你在从库上运行起修改结构操作,在操作结束时会暂停主从复制,让两张都处于同步、就绪状态,然后切换、再切换回来。 对于我们生产环境地每一张,小到空,大到几百 GB,都会通过修改存储引擎的方式来进行修改(engine=innodb),这样并不会真正修改结构

    7.1K80发布于 2018-03-26
  • 来自专栏张戈的专栏

    MySQL在线DDL修改结构的简单经验分享

    摘 要 在线DDL修改生产环境的大一直是运维、DBA一个很头痛的问题,本文分享一些相关经验,希望对还在头痛的同学能有所帮助,当然更希望路过的大神,如果有更靠谱的方案能够指点一二,不吝赐教。 一、故障背景 内部故障群反馈:XX 系统卡住不可用了,请帮忙看看; 排查发现是有一个 alter 修改数据库的结构的变更,出现了大量的 MDL 锁,导致服务不可用,最后通过 kill 掉这个 alter pt-osc 工具的工作流程: 检查更改是否有主键或唯一索引,是否有触发器 检查修改结构,创建一个临时,在新上执行 ALTER TABLE 语句 在源上创建三个触发器分别对于 INSERT UPDATE DELETE 操作 从源拷贝数据到临时,在拷贝过程中,对源的更新操作会写入到新建中 将临时和源 rename(需要元数据修改锁,需要短时间锁) 删除源和触发器,完成结构的修改 以上,就是我在 MySQL 在线 DDL 修改结构的一些经验分享,希望路过的大神如果有更好的方案能指点一二,不吝赐教。

    3.7K70发布于 2018-03-26
  • MySQL DDL操作

    一、查询创建1、查询当前数据库所有show tables;2、查看指定结构 desc 名 ;通过这条指令,我们可以查看到指定的字段,字段的类型、是否可以为NULL,是否存在默认值等信 息。 4、创建结构CREATE TABLE 名( 字段1 字段1类型 [ COMMENT 字段1注释 ], 字段2 字段2类型 [COMMENT 字段2注释 ], 字段3 字段3类型 [COMMENT 字段 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308 员工姓名(字符串类型,长度不超过10位) 4. 性别(男/女,存储一个汉字) 5. 年龄(正常人年龄,不可能存储负数) 6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符) 7.

    1.2K70编辑于 2023-04-10
  • 来自专栏MySQL参数系列

    MySQL大DDL

    最近线上有大变更。所以给大家分享一下大变更的工具。 MySQL大变更主要有原生的online DDL、pt-osc(pt-online-schema-change)、ghost三种工具。 online DDL在5.7、8.0版本会支持更好一点儿,早一点的版本支持比较弱。 pt-osc是percona工具集中的一个工具。应该是应用最广泛的之一。 ghost是用go语言实现的工具。

    1.8K20编辑于 2022-08-16
  • 来自专栏springboot

    MySql基础之DDL-数据定义语言(修改结构

    一些可视化工具可以改名,它是建新库,把所有复制到新库,再删 旧库完成的。 -- 创建的emp1和employees结构相同数据相同 CREATE TABLE emp1 AS SELECT * FROM employees; -- 创建的emp2是空 CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2; 查看数据结构 show create table emp1 3、修改 追加一个列 语法格式如下 方式一:使用RENAME RENAME TABLE emp TO myemp; 方式二: ALTER table dept RENAME [TO] detail_dept; -- [TO]可以省略 4、 删除 语法格式: DROP TABLE [IF EXISTS] 数据1 [, 数据2, …, 数据n]; DROP TABLE 语句不能回滚 清空 删除中所有的数据 TRUNCATE

    35710编辑于 2025-01-21
  • 来自专栏喵叔's 专栏

    二、DDL 数据

    常用存储引擎: MyISAM:拥有较快的插入和查询速度,但是不支持事务; InnoDB:支持ACID事务,指出行级锁,支持外键,MYSQL5.5 版本后的默认存储引擎; MRG_MYISAM:将一组结构相同的 数值类型包括: timyint:1 字节 小整数值,一般用于存储状态; smallint:2 字节 大整数值; mediumint:3 字节 大整数值; int:4 字节 大整数值; bigint:8 字节 极大整数值; float:4 字节 单精度浮点数值; double:8 字节 双精度浮点数值; decimal:Max(D+,M+) 含小数值,一般用于金额。 三、创建数据 DDL中对数据的操作主要包含三种:创建、修改和删除。创建数据们需要定义的信息主要包括:名、字段名、字段类型。 四、操作已存在的: 添加字段:ALTER TABLE 名 ADD 字段名 字段类型; 修改字段:ALTER TABLE 名 MODIFY 字段名 字段类型; 删除字段:ALTER TABLE

    1.1K00发布于 2021-06-14
  • 来自专栏C++系列

    【MySQL】DDL结构的数据类型盘点&案例演示

    直接在类型后加上UNSIGNED即可 例子: age tinyint unsigned 要使用小数: 第一个参数控制长度,第二个参数控制允许出现的几位小数 例子: score double(4,1 (-32768, 32767) (0, 65535) 大整数值 mediumint 3 byte (-8388608,8388607) (0, 16777215) 大整数值 int/integer 4 -2147483648, 2147483647) (0, 4294967295) 大整数值 bigint 8 byte (-2へ63, 2へ63-1) (0, 2へ64-1) 极大整数值 float 4 中等长度文本数据 longbolb 0-4294967295 bytes 二进制形式的极大文本数据 longtext 0-4294967295 bytes 极大文本数据 三.日期类型 单独年月日十分 byte 1970-01-01 00:00:01 至 2038 -01-1903:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳 四.根据需求创建(设计合理的数据类型

    29610编辑于 2024-03-28
  • 来自专栏全栈程序员必看

    hibernate.hbm2ddl.auto=update不能自动生成结构

    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) 说是t_user 不存在,也就是说hibernate并没有自动生成结构,hibernate.hbm2ddl.auto=update不起作用,但是把update改为create就能自动生成。 org.hibernate.dialect.MySQLInnoDBDialect 改为 hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 但是我本来就是这样写的,肯定是其他原因也会导致hibernate.hbm2ddl.auto 终于在几乎千篇一律的文章中找到了一篇不一样的,原因是数据库中已经有相同名字的了(可能这张是属于别的用户) 于是我到别的里面查,果然在另外一个里面确实存在t_user了, 解决方案: 将既存t_user 改为t_user1或者将这次的名字修改下, 然后再执行这次代码,成功!!

    73420编辑于 2022-07-18
  • 来自专栏喵叔's 专栏

    二、DDL 数据

    常用存储引擎: MyISAM:拥有较快的插入和查询速度,但是不支持事务; InnoDB:支持ACID事务,指出行级锁,支持外键,MYSQL5.5 版本后的默认存储引擎; MRG_MYISAM:将一组结构相同的 数值类型包括: timyint:1 字节 小整数值,一般用于存储状态; smallint:2 字节 大整数值; mediumint:3 字节 大整数值; int:4 字节 大整数值; bigint:8 字节 极大整数值; float:4 字节 单精度浮点数值; double:8 字节 双精度浮点数值; decimal:Max(D+,M+) 含小数值,一般用于金额。 三、创建数据 DDL中对数据的操作主要包含三种:创建、修改和删除。创建数据们需要定义的信息主要包括:名、字段名、字段类型。 四、操作已存在的: 添加字段:ALTER TABLE 名 ADD 字段名 字段类型; 修改字段:ALTER TABLE 名 MODIFY 字段名 字段类型; 删除字段:ALTER TABLE

    87520发布于 2021-06-25
  • 来自专栏大大刺猬

    提取超复杂DDL

    导读在学习mysql的结构的时候, 会接触到各种数据类型, 各种索引, 那么把它们都柔和到一起会怎么样呢? 分区和空间坐标有空间坐标字段的时候是不支持分区的, 会报错ERROR 1178 (42000): The storage engine for the table doesn't support GEOMETRY 就挺离谱的...复杂DDL提取所以我们的复杂DDL是不包含分区的..., 由于测试版本是8.0.28和5.7.38 所以也不支持向量类型..., 前缀索引也忘了...好了, 来看看这个超复杂的DDL 尤其是某些情况只剩数据文件的时候, 就非常需要数据文件对应的DDL了.该DDL比较复杂, 但不难, 我就不解释了.在5.7环境提取DDL在mysql 5.7环境下, 的元数据信息是放在.frm文件中的 tinyint_col` > 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;暂未发现问题, 自己写的, 不容易发现问题

    82940编辑于 2024-12-11
  • 来自专栏机器学习/数据可视化

    MySQL学习4_DDL

    ---- DDL DDL,data defination language,指的是数据定义语言,其主要作用是创建数据库,对库结构进行删除和修改等操作。 全部命令 1. 操作 -- 创建 create table user(字段1,字段2,... ,字段n); -- 查看创建的SQL语句 show create table user; -- 查看表的结构 desc user; -- 删除 drop table user; -- n ); // 最后的分号不能忘记 // 2、查看所有的 show tables; // 3、查看表的结构 desc user; // 4、查看创建的SQL语句 show create table user; // 5、删除 drop table user; // 6、修改名 alter table user

    55620发布于 2021-03-02
  • 来自专栏后端从入门到精通

    段的结构 (4)---独立空间结构(三十)

    一个索引分为叶子节点段,和非叶子节点段,一个段又有三个xdes entry链表,所以2个索引又4个段,12个链表,直属空间结构也有三个extend descriptor enrty链表,所以一共15个 区的分类&XDES Entry(3)---独立空间结构(二十九) 段的结构 我们都知道段包含零碎的页面又包含完整的区组成。 not_full_n_used:4个字节,这个字段表示在not_full链表中已经使用多少个页面。 Magic Number:4个字节,用来标记inode entry是否被初始化,(初始化:吧各个字段的值都填进去)。规定了,当这个字段的值是97937874,则被初始化,否则没有被初始化。 FSP_HDR类型 首先看第一组的第一个页面,页号为0,extent0,当然也是空间的第一个页面,页面类型是FSP_HDR,存储着空间内的一些整体属性和第一组内256个区对应的xdes entry结构

    78030编辑于 2022-07-26
  • 来自专栏蝉羽

    MySQL DDL 操作全攻略

    我们在运维MySQL数据库的时候,时常会对数据进行DDL操作,比如修改字段、添加索引等。对于MySQL,DDL操作时会锁。如果比较小,比如小于1w时,影响还是比较小的。 MySQL 千万级因为上述相关的一些问题,需要进行 DDL 操作时,由于其锁特性可能引发诸多严重问题:长时间锁导致业务中断:当执行 DDL 操作修改千万级的字段或索引时,例如添加一个新字段,MySQL 锁期间资源竞争与系统负载飙升:DDL期间,等待锁释放的事务会不断堆积,占用大量系统资源如 CPU、内存和磁盘 I/O。 gh-ost 工作原理采用消费 binlog 的方式来代替触发器方式,将同步信息存储到临时中,经历校验、初始化、迁移、cut-over 四个阶段完成结构变更。 但需要注意的是,并非所有的 DDL 操作和结构都支持这种无锁或低锁级别的操作,具体要根据实际情况和 MySQL 版本进行调整.三、总结在处理 MySQL 千万级DDL 操作时,我们需要充分认识到锁可能引发的一系列严峻问题

    62810编辑于 2024-11-25
  • 来自专栏数据库之巅

    MySQL谬误集02: DDL

    比如关于MySQL DDL操作,有很多同学认为会锁,那是不是一定会锁呢?是锁读还是锁写呢?锁多长时间?不同的DDL操作有差别吗?MySQL从5.5到8.0,对这个问题有什么改进呢? 这些选项允许数据库管理员在执行结构更改时,根据需要选择适当的并发级别,以平衡性能和数据完整性。 对于大,变更时间长 2. 需要额外的磁盘空间 3. 会消耗大量的CPU,内存和IO资源 4.  不支持COMPRESSED格式 4. 不支持有全文索引的 5. 不支持在DD空间的 6. (4) “Rebuilds Table?” 列显示是否要重构,如果支持inplace语法,则原地重构,否则采用copy的方式重构。 (5) 如何区分是否使用老的COPY的方式?

    2.2K32编辑于 2023-08-19
  • 来自专栏低级Java知识传播者

    纯分享:将MySql的建DDL转为PostgreSql的DDL.md

    结果不知道这个国产化过程中改了啥,用pgAdmin连上就各种报错,放弃 dbeaver,这个倒是可以用,就是我感觉操作太麻烦了,太繁琐 基于以上原因,一直用dbeaver来着,之前两次把mysql项目的结构换成 这次又来了个项目,我就换回了我熟悉的sqlyog(一款mysql客户端),几下就把建好了(mysql版本),然后写了个工具代码,来把mysql的DDL转换成pg的。 下面简单介绍下这个转换代码。 JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. ” 它支持解析sql语句这种非结构化文本为结构化数据 , `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 支持的DDL类型,目前仅限于create table和drop table,目前能满足我个人需求了,反正mysqldump那些导出来的sql结构基本就这样。 暂不支持DML,如insert那些。

    2.7K30编辑于 2023-09-12
  • 来自专栏roseduan写字的地方

    Postgres 源码学习 4文件 Page 结构概览

    前面一节主要从宏观上了解 Postgres 数据文件的组织方式,接下来我们深入到一个文件的 page 内部,查看 page 的具体结构表示。 -+---------+----------- 1/8CA839B0 | 0 | 0 | 824 | 1792 | 8192 | 8192 | 4 可以看到获取到的字段和下图的 PageHeader 结构基本一致。 Linp n,是一个数组,用来标识 page 内一条数据的位置偏移,使用结构体 ItemIdData 表示。 这种数据组织的方式,其实可以非常高效的读取、插入、删除中的一行数据,因此 Postgres 的 Heap 结构其实适用于 OLTP 的场景。

    47310编辑于 2024-06-11
  • 来自专栏DBA随笔

    Online-DDL操作问题初探

    Online-DDL操作问题初探 今天下午在执行一个结构变更的时候,出现了一个问题,拿着分析了分析,对于online-ddl又有了新的认识,这里写篇文章记录下。 需要进行的操作:给该新增4个字段 02 执行方案 看到这个问题,我进行了两个测试: 首先将该进行备份,并且在测试环境上恢复了一份,不加任何的写入操作,直接在测试环境上执行alter table 去掉该参数之后,最终pt-osc修改结构执行成功。 3、MySQL5.6版本下开始支持online-ddl的操作,该方法和上面两种最大的不同是在执行DDL的时候,不会锁原,原不仅可以读,还可以写,当然,需要注意的是,该特性仅支持部分DDL操作。 column_definition, ALGORITHM=INPLACE, LOCK=NONE; 4、在MySQL5.7中,沿用了5.6中的online-ddl的方法,但是稍有不同,从官方文档上看,

    1.8K50发布于 2020-01-22
  • 来自专栏数据库相关

    MySQL5.6 Online DDL 是否锁、rebuild、inplace的说明

    Online DDL 是否锁、是否rebuild、inplace或copy算法的说明: 原文: https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html

    1.1K40发布于 2019-09-17
  • 来自专栏编程技术向北,人生删除指南

    MySQL Online DDL导致全局锁案例分析

    MySQL Online DDL导致全局锁案例分析 我这边遇到了什么问题? 线上给某个执行新增索引SQL, 然后整个数据CPU打到100%, 连接数暴增到极限, 最后导致所有访问数据库的应用都奔溃. 支持在线DDL,新增index/删除index之类的可以直接InPlace操作,不需要rebuild整张,理论上效果是很快的,详细资料见Online DDL Operations DDL add index 这里需要找到的是一直在占用该的会话,而不是正在等待MDL锁解除的会话,注意区分。可以根据State列的状态和Info列的命令内容来进行分析判断。 最后建议 online DDL前,最好确认一下当前数据库有没有类似lock存在 最好的方案还是主从切换来搞 全文完.

    1.9K20发布于 2019-05-11
领券