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

    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 字段 ,16 777 215)大整数值INT或INTEGER4 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 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 代表,只有名存在时才会删除该名不存在,则不执行删除操作(如果不 加该参数项,删除一张不存在的,执行将会报错)。

    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-数据定义语言(修改结构

    一些可视化工具可以改名,它是建新库,把所有复制到新库,再删 旧库完成的。 数据类型 [约束条件] [默认值], …… [约束条件] ); -- 创建 CREATE TABLE emp ( -- int类型 emp_id INT, -- 最多保存20个中英文字符 -- 创建的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、修改 追加一个列 语法格式如下 语法格式: DROP TABLE [IF EXISTS] 数据1 [, 数据2, …, 数据n]; DROP TABLE 语句不能回滚 清空 删除中所有的数据 TRUNCATE TABLE

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

    二、DDL 数据

    常用存储引擎: MyISAM:拥有较快的插入和查询速度,但是不支持事务; InnoDB:支持ACID事务,指出行级锁,支持外键,MYSQL5.5 版本后的默认存储引擎; MRG_MYISAM:将一组结构相同的 三、创建数据 DDL中对数据的操作主要包含三种:创建、修改和删除。创建数据们需要定义的信息主要包括:名、字段名、字段类型。 [table_options][select_statement] 说明: TEMPORARY:创建临时,在当前会话结束后将自动消失; IF NOT EXISTS:在建前先判断是否存在,只有该不存在时才创建 四、操作已存在的: 添加字段:ALTER TABLE 名 ADD 字段名 字段类型; 修改字段:ALTER TABLE 名 MODIFY 字段名 字段类型; 删除字段:ALTER TABLE 名 DROP COLUMN 字段名; 删除:DROP TABLE 名。

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

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

    中等长度文本数据 longbolb 0-4294967295 bytes 二进制形式的极大文本数据 longtext 0-4294967295 bytes 极大文本数据 三.日期类型 单独年月日十分 timestanp 4 byte 1970-01-01 00:00:01 至 2038 -01-1903:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳 四.根据需求创建( 设计合理的数据类型、长度) 设计一张员工信息,要求如下: 编号(纯数字) 员工工号(字符串类型,长度不超过10位) 员工姓名(字符串类型,长度不超过10位) 性别(男/女,存储一个汉字) 年龄(正常人年龄 unsigned comment '年龄', idcard char(18) comment‘身份证号’, entrydate date comment ‘入职时间’ )comment '员工'

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

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

    DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) at com.mvn.service.UserService$$EnhancerByCGLIB$$8b9eb23e.save 不存在,也就是说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:将一组结构相同的 三、创建数据 DDL中对数据的操作主要包含三种:创建、修改和删除。创建数据们需要定义的信息主要包括:名、字段名、字段类型。 [table_options][select_statement] 说明: TEMPORARY:创建临时,在当前会话结束后将自动消失; IF NOT EXISTS:在建前先判断是否存在,只有该不存在时才创建 四、操作已存在的: 添加字段:ALTER TABLE 名 ADD 字段名 字段类型; 修改字段:ALTER TABLE 名 MODIFY 字段名 字段类型; 删除字段:ALTER TABLE 名 DROP COLUMN 字段名; 删除:DROP 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文件中的 boolean_col` tinyint(1) DEFAULT NULL, `smallint_col` smallint(6) DEFAULT NULL, `mediumint_col` mediumint(9)

    82940编辑于 2024-12-11
  • 来自专栏CSDN搜“看,未来”

    数据结构9)-- 哈希 unordered_map

    哈希(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到中一个位置来访问记录,以加快查找的速度。 ---- 加载因子 无论如何,哈希中,碰撞无法绝对避免。 当碰撞发生时,就不得不使用开链表法或再散列法存储冲突数据;而这必将影响哈希的性能。 很容易想到,如果哈希很大、里面却没存几条数据,那么它出现冲突(碰撞)的几率就会很小;反之,如果哈希已经接近满了,那么每条新加入的数据都会产生碰撞。 哈希实际所存数据量和哈希最大容量之间的比值,叫做哈希的“加载因子”。 加载因子越小,冲突的概率就越低,但浪费大量空间;加载因子越高,冲突概率越大,但空间浪费就越少。 手写哈希的文章网上一找一大把。

    1.4K11发布于 2021-09-18
  • 来自专栏趣学算法

    数据结构9讲 数组与广义

    数据结构9讲 数组与广义 数组是由相同类型的数据元素构成的有序集合。 一维数组看一看作一个线性,例如: ? 图1一维数组 二维数组也可以看作一个线性,例如: ? 数组一般采用顺序存储结构,因为存储单元是一维的,而数组可以是多维,如何用一组连续的存储单元来存储多维数组呢? 图20 稀疏矩阵三元组存储 广义: 广义是线性的推广,也称为列表。 n=0的广义为空。 广义最常见就是求表头、尾。 表头GetHead(L):非空广义的第一个元素,可以是一个单元素,也可以是一个子表。 尾GetTail(L):非空广义删除表头元素后余下元素所构成的尾一定是一个。 例如D=(a,(b),(a,(b,c,d))),长为,表头为a,尾为( (b),(a,(b,c,d)))。

    1.1K20发布于 2018-09-13
  • 来自专栏蝉羽

    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,对这个问题有什么改进呢? 这些选项允许数据库管理员在执行结构更改时,根据需要选择适当的并发级别,以平衡性能和数据完整性。 row_log记录了DDL变更过程中新产生的DML操作,并在DDL执行最后将其应用到新的中,保证数据完整性。 Make column NOT NULL 6.Add primary key 7.Drop primary key and add another 8.Rebuild with FORCE option 9. Online DDL 3)对于大,又不支持只改元数据的操作,都不使用Online DDL,而是使用了Gh-ost工具改,最大的原因就是即使不copy而是rebuild,也会导致下游备机复制延迟,

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

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

    该数据库我倒是想吐槽吐槽,它是基于Postgre 9.x的基础上改的,至于改了啥,我也没去详细了解,当初的数据库POC测试和后续的选型没太参与,但对于我一个开发人员的角度来说,它给我带来的不便主要是客户端 结果不知道这个国产化过程中改了啥,用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语句这种非结构化文本为结构化数据 支持的DDL类型,目前仅限于create table和drop table,目前能满足我个人需求了,反正mysqldump那些导出来的sql结构基本就这样。 暂不支持DML,如insert那些。

    2.7K30编辑于 2023-09-12
  • 来自专栏DBA随笔

    Online-DDL操作问题初探

    Online-DDL操作问题初探 今天下午在执行一个结构变更的时候,出现了一个问题,拿着分析了分析,对于online-ddl又有了新的认识,这里写篇文章记录下。 去掉该参数之后,最终pt-osc修改结构执行成功。 03 关于online-ddl的一点说明 MySQL的online ddl操作是在5.6版本引入的,在不同的版本下,有不同的执行过程: 1、在MySQL5.5版本前,我们是使用copy的方式来进行alter 3、MySQL5.6版本下开始支持online-ddl的操作,该方法和上面两种最大的不同是在执行DDL的时候,不会锁原,原不仅可以读,还可以写,当然,需要注意的是,该特性仅支持部分DDL操作。 在MySQL官网上,我们可以看到,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列的命令内容来进行分析判断。 那kill 了他们看看. [64d1e863gy1g2xspdta37j21ag0bswl9.jpg] 额, 解决了.

    1.9K20发布于 2019-05-11
  • 来自专栏编程学习之路

    【0基础学习mysql】之DDL-操作

    目录 DDL-操作 1.创建 1.举例 2.执行结果 2.显示 1.举例 2.执行结果  3.显示数据库中的 1.举例 2.执行结果  4.修改 1.添加字段  2.修改字段  3.删除字段 4.修改名  5.删除 总结 ---- DDL-操作 1.创建 create table 名(字段 字段类型,字段,字段类型); 1.举例 create table user(id int,name MODIFY 字段名 新数据类型(长度); 举例: 将字段id的数据类型改为varchar(9) 代码: create table user(id int,name varchar(10),age int ); ALTER TABLE user ADD gender char(1)COMMENT '性别'; ALTER TABLE user MODIFY id varchar(9); show create ,age int); ALTER TABLE user ADD gender char(1)COMMENT '性别'; ALTER TABLE user MODIFY id varchar(9); ALTER

    42140编辑于 2022-11-20
领券