首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么MySQL会向InnoDB表添加注释?

在MySQL中,InnoDB是默认的存储引擎,它使用行级锁定和事务支持,以提供更高的并发性和数据恢复能力。当MySQL向InnoDB表添加注释时,它实际上是在执行ALTER TABLE语句,以便在表结构中添加元数据。

注释可以帮助开发人员更好地理解表结构和字段含义,同时也可以提高代码的可读性和可维护性。在InnoDB中,注释是通过在系统表空间中添加一个名为“comment”的列来实现的。

当MySQL向InnoDB表添加注释时,它会执行以下操作:

  1. 检查表是否存在,如果不存在,则返回错误。
  2. 检查表是否已经有注释,如果有,则返回错误。
  3. 检查注释是否符合InnoDB的要求,如果不符合,则返回错误。
  4. 执行ALTER TABLE语句,将注释添加到表结构中。

总之,MySQL向InnoDB表添加注释是为了提高代码的可读性和可维护性,同时也可以帮助开发人员更好地理解表结构和字段含义。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySqlInnoDB为什么要建议用自增列做主键

InnoDB引擎的特点 1、InnoDB引擎是基于B+树的索引组织(IOT) 关于B+树 ?...这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15.../16),则开辟一个新的页(节点) 4、自增主键 如果使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页 5、非自增主键 如果使用非自增主键...,如果一个InnoDB又没有显示主键,又有可以被选择为主键的唯一索引,但该唯一索引可能不是递增关系时(例如字符串、UUID、多字段联合唯一索引的情况),该的存取效率就会比较差。...《高性能MySQL》中的原话 ? ?

3.9K20
  • 技术译文 | 为什么 MySQL 添加一个简单索引后大小增长远超预期?

    MySQL 官方文档中简要提到了这个简单的规则[1] 然而,在某些情况下,添加新索引的开销可能远远超出预期!...t1.ibd -rw-r----- 1 przemek przemek 508M Jan 22 22:40 db1/t1.ibd 当我们的查询在 WHERE 子句中使用列 b 时,很自然地我们必须通过该列添加索引来优化此类查询...$ ls -lh db1/t1.ibd -rw-r----- 1 przemek przemek 908M Jan 22 23:11 db1/t1.ibd 您可能问 — 在一个小的 INT 列上添加索引怎么可能实现如此巨大的增长...大小增加了 79% ,完全出乎意料,因为我们只索引了中最小的列! 如果我告诉你我实际上预计它会增长得更多,你感到惊讶吗?原因是二级索引将主键列附加到其记录中。...b 列上的新索引包括该列以及定义为主键的列,因此再次,这个特定案例中的所有三列。因此,我预计的大小会增加一倍。让我们研究一下为什么这种情况没有发生以及为什么空间文件没有增长到 ~1GB。

    20420

    MySQL 8.0 小版本更新要点,那个小版本更稳定(8.0.24-8.0.37)

    /doc/refman/8.0/en/innodb-online-ddl-operations.html (WL #14785) innodb_open_files打开数量的限制之前不包含临时空间文件...参数变量的变化 https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html 8.0.31 版本更新功能 网页连接/注释...innodb-buffer-pool-resize.html 8.0.32 版本更新功能 网页连接/注释 Generated Invisible Primary Keys (GIPKs) 支持从库添加隐藏式主键...(Bug #34378513, Bug #107854) 8.0.33 版本更新功能 网页连接/注释MySQL 8.0.33 中,audit_log插件添加了对选择使用哪个数据库来存储 JSON...筛选的支持 8.0.34 版本更新功能 网页连接/注释 mysqlpump 客户端将被弃用 (WL #15652) group_replication_recovery_complete_at服务器系统变量现在已弃用

    45310

    老大问我:“建为啥还设置个自增 id ?用流水号当主键不正好么?”

    AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='注释'; 所以在我使用的过程中,流水号都是单独设置了一个字段,比如叫 trans_no,但是这次就遇到了疑问...如何添加主键 ? 可以在 create 创建的时候指定,也可以使用 alter 语句后面添加主键,不过官方建议在创建时就指定。...为什么添加主键 主键可以唯一标识这一行数据,从而保证在删除更新操作时,只是操作这一行数据。 索引需要,每个 InnoDB 又有一个特殊的索引,即聚簇索引,用来存储行数据。...图:《MySQL 技术内幕 InnoDB 存储引擎》 数据的插入 当数据插入时,InnoDB 会使页面 1/16 空闲,以备将来插入和更新索引记录。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版

    1.9K20

    开发经验|小白该如何学习MySQL配置文件

    引言 上一篇简单介绍了下MySQL的存储引擎,为什么需要存储引擎以及如何使用存储引擎。MySQL的配置文件是控制和配置 MySQL服务器行为的重要文件。...空间的个数 #已经弃用了,只能手动添加undo空间 #The innodb_undo_tablespaces variable is deprecated and is no longer configurable...= 1 #在创建InnoDB索引时用于指定对数据排序的排序缓冲区的大小 innodb_sort_buffer_size = 67108864 #控制着在有auto_increment 列的插入数据时...,相关锁的行为,默认为2 #0:traditonal (每次都会产生锁) #1:consecutive (mysql的默认模式,产生一个轻量锁,simple insert获得批量的锁,保证连续插入..., #但同时也增加DDL执行完成时应用日志时锁定的时间 innodb_online_alter_log_max_size = 4G ######################## Innodb

    72171

    老大问我:“建为啥还设置个自增 id ?用流水号当主键不正好么?”

    AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='注释'; 所以在我使用的过程中,流水号都是单独设置了一个字段,比如叫 trans_no,但是这次就遇到了疑问...如何添加主键 可以在 create 创建的时候指定,也可以使用 alter 语句后面添加主键,不过官方建议在创建时就指定。...为什么添加主键 主键可以唯一标识这一行数据,从而保证在删除更新操作时,只是操作这一行数据。 索引需要,每个 InnoDB 又有一个特殊的索引,即聚簇索引,用来存储行数据。...图:《MySQL 技术内幕 InnoDB 存储引擎》 数据的插入 当数据插入时,InnoDB 会使页面 1/16 空闲,以备将来插入和更新索引记录。...相关资料 [1] MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/ [2] 《MySQL 技术内幕 InnoDB 存储引擎》第二版 - <End

    83330

    MySQL 8.0 版本更新 要点 列表 (8.0-8.0.23)

    ) SELECT @var, @var:=@var+1 赋予变量的方式有风险,后续的版本将兼容,此功能后续清除 (WL #12131) 8.0.14 版本更新功能 网页连接/注释 为数据库更改密码,...windows 版本MySQL 有大量的更新 大量的innodb 数据库引擎,replication 数据复制的bug fixed 8.0.15 版本更新功能 网页连接/注释 修复在检查点操作中持续进行数据字典的操作...添加如下系统变量innodb_doublewrite_dir,innodb_doublewrite_files,innodb_doublewrite_pages,innodb_doublewrite_batch_size...->mutex)被分片锁取代 (WL #10314) 8.0.21有对replication group有诸多的改善 8.022添加对符合条件的查询实现了派生条件下推,即某些情况下可将外层条件下推到派生.../8.0/en/change-replication-source-to.html 添加了autoextend_size 增加空间变满自动扩展大小的设置 https://dev.mysql.com/doc

    20610

    Mysql数据库优化

    #方式3: CREATE INDEX已创建的数据添加索引....MyISAM存储引擎:是MySQL 数据库中最典型的级锁。 “隐式”读的级锁:当用户对MyISAM存储引擎执行SELECT查询操作前,服务器“自动”地为其添加-一个级的读锁。...“隐式”写的级锁:执行INSERT、 UPDATE、DELETE等写操作前,服务器“自动”地为其添加一个级的写锁。...“隐式”行级排他锁:当用户对InnoDB存储引擎执行INSERT、UPDATE、DELETE等写操作前,服务器“自动”地为通过索引条件检索的记录添加行级排他锁。...用户在InnoDB表显式添加行级锁时,InnoDB存储引擎首先会“自动”地添加一个意向锁,然后再添加行级锁。

    2.4K20

    MySQL是如何保证数据不丢失的?

    意味着InnoDB将这些「脏页」磁盘刷新时,在操作系统层面会被分成4个4KB的页,这样的话,如果其中有一页因为MySQL宕机或者其他异常导致没有成功刷新到磁盘,就会出现「页损坏现象」,数据也就不完整了...并且先以顺序IO的方式「Doublewrite Buffer」写入数据页,再以随机IO异步刷新到空间这种方式还可以提高写入性能。 再看第二点,为什么以日志的形式先刷新到磁盘?...这种日志先行(WAL)的机制也是MySQL用于提高效率和保障数据可靠的一种方式。 为什么是尽可能的恢复?...Redo Log 恢复数据 首先,redo log记录DML的操作类型、数据的空间、数据页以及具体修改的内容,以 insert into t1(1,'hi')为例,对应的redo log内容大概这样的...在磁盘刷新「脏页」时,为了避免发生「页损坏」现象,InnoDB采用双写机制,先将这些脏页顺序写入「Doublewrite Buffer」中,随后再将数据页异步刷新到各个空间中,这种方式既能提高写入效率

    9310

    MySQL是如何保证数据不丢失的?

    意味着InnoDB将这些「脏页」磁盘刷新时,在操作系统层面会被分成4个4KB的页,这样的话,如果其中有一页因为MySQL宕机或者其他异常导致没有成功刷新到磁盘,就会出现「页损坏现象」,数据也就不完整了...并且先以顺序IO的方式「Doublewrite Buffer」写入数据页,再以随机IO异步刷新到空间这种方式还可以提高写入性能。再看第二点,为什么以日志的形式先刷新到磁盘?...这种日志先行(WAL)的机制也是MySQL用于提高效率和保障数据可靠的一种方式。为什么是尽可能的恢复?...Redo Log 恢复数据首先,redo log记录DML的操作类型、数据的空间、数据页以及具体修改的内容,以 insert into t1(1,'hi')为例,对应的redo log内容大概这样的假如...在磁盘刷新「脏页」时,为了避免发生「页损坏」现象,InnoDB采用双写机制,先将这些脏页顺序写入「Doublewrite Buffer」中,随后再将数据页异步刷新到各个空间中,这种方式既能提高写入效率

    96752

    开发基础规范之数据库规范

    ,并以日期为后缀二.基础规范使用INNODB存储引擎表字符集使用UTF8所有都需要添加注释数据量建议控制在5000W以内禁止在数据库中使用VARBINARY、BLOB存储图片、文件等存储精确浮点数必须使用...原因:简单的SQL容易使用到MySQL的query cache;减少锁时间特别是MyISAM;可以使用多核cpu。5.为什么不建议使用SELECT *?...增加很多不必要的消耗(cpu、io、内存、网络带宽);增加了使用覆盖索引的可能性;当结构发生改变时,前段也需要更新。6.InnoDB存储引擎为什么避免使用COUNT()?...InnoDB避免使用COUNT()操作,计数统计实时要求较强可以使用memcache或者redis,非实时统计可以使用单独统计,定时更新。7.MySQL中如何进行分页?...MySQL索引查找类似于新华字典的拼音和部首查找,当拼音和部首索引不存在时,只能通过一页一页的翻页来查找。当MySQL查询不能使用索引时,MySQL进行全扫描,消耗大量的IO。

    34350

    MySQL 数据库添加数据时为什么产生外码(外键)约束?原理就是什么?如何解决?

    总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...---- 本次案例的案例情景是传统的数据库:学生-课程数据库。 一、插入新数据时报错外键约束? 我们在 Course 中插入课程号为 1 的数据时提示违反了外键约束。...查看 Course 定义的 SQL 语句如下: create table course ( cno char(4) primary key, cname char(40), cpno char(4),...插入数据的时候,不是按中 cno 的顺序插入,而是根据数据依赖的关系插入数据。比如,根据表里的数据,分析得出可以按 cno=2、6、4、7、5、1、3 的顺序插入数据。...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题,并通过经典案例为大家分析了为何会出现这样的问题,同时顺着思路来设计业务的解决方案。

    2.9K31

    MySQL 8.0.23新特性 - 不可见列

    本文是与MySQL不可见列相关的系列文章的第二部分。 这篇文章介绍了为什么不可见列对InnoDB存储引擎很重要。 首先,让我简单解释一下InnoDB是如何处理主键的,以及为什么一个好的主键很重要。...最后,为什么主键也很重要。 InnoDB如何存储数据? InnoDB空间存储数据。这些记录存储并用聚簇索引排序(主键):它们被称为索引组织。...对InnoDB来说,当没有定义主键,会使用第一个唯一非空列。如果没有可用的列,InnoDB创建一个隐藏主键(6位)。...不可见列的用处 有了新的不可见列,如果应用不允许添加新列,我们现在就可以没有主键的添加合适的主键。...如果主键没有定义,我们如何使用它为InnoDB添加主键。 如之前所述,好的主键对InnoDB很重要(存储,IOPS,二级索引,内存等)但是MySQL中主键还有一个重要的作用:复制!

    1.3K10

    MySQL 和列的注释深入理解

    像代码一样,可以为以及中的列添加注释,方便其他人知晓其功能。对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要。...注释添加 注释添加是通过在定义或列的时候在末尾加上 COMMENT 关键字来实现的,最长支持 1024 个字符。 可以在创建的时候为和列添加相应的注释。...'注释'; 执行上面的语句后创建了一个名为 test_comment 的,并且为和其中的 col1 列指定了相应的注释。...----------+ 1 row in set (0.00 sec) 注释的更新 对已经存在的和列,可通过相应的更新修改操作来添加注释。..._general_ci COMMENT='注释' 1 row in set (0.00 sec) 注释添加,更新 通过 ALTER TABLE 来完成对表注释添加和更新。

    2K10

    MySQL8 中文参考(二)

    Innodb_undo_tablespaces_implicit: InnoDB 创建的撤销空间数量。MySQL 8.0.14 中添加。...innodb_scan_directories: 定义在 InnoDB 恢复期间扫描空间文件的目录。MySQL 8.0.2 中添加。...在 MySQL 8.0.26 中添加。 log_slow_extra: 是否慢查询日志文件写入额外信息。在 MySQL 8.0.14 中添加。...*MySQL-specific code* */ 在这种情况下,MySQL 服务器解析并执行注释中的代码,就像执行任何其他 SQL 语句一样,但其他 SQL 服务器应该忽略这些扩展。...1.6.2.3 外键约束的差异 MySQL 对外键约束的实现与 SQL 标准在以下关键方面有所不同: 如果父中有多行具有相同的引用键值,InnoDB像其他具有相同键值的父行不存在一样执行外键检查

    15810

    mysqldump详解

    用户名 --pasword -p MySQL 密码 --databases 指定要备份的数据库 --all-databases 备份mysql服务器上的所有数据库 --compact 压缩模式,...产生更少的输出 --comments 添加注释信息 --complete-insert 输出完成的插入语句 --lock-tables 备份前,锁定所有数据库 --no-create-db/--...1.调用FWRL(flush tables with read lock),全局禁止读写 2.开启快照读,获取此期间的快照(仅仅对innodb起作用) 3.备份非innodb数据(*.frm,*.myi...,*.myd等) 4.非innodb备份完毕之后,释放FTWRL 5.逐一备份innodb数据 6.备份完成 4.2执行mysqldump,分析备份日志 # 执行语句 [root@localhost...执行flush tables操作,并加一个全局读锁,那么以上两个命令貌似是重复的, 为什么不在第一次执行flush tables操作的时候加上锁呢?

    67630
    领券