MySQL 学习

InnoDB foreign key 实现

本文是对Innodb外键实现代码路径的简单记录,对外键实现逻辑熟悉的同学直接忽略吧。。。。。 前言 外键代表两张表之间的引用约束关系:在子表上出现的列记录,必须在父表上已经存在。通过外键,我们可以确保业务上的逻辑一致性,同时还能实现一些级联操作;MySQL目前只有InnoDB引擎支持外键,类似MyISAM、Tokudb等引擎都不支持外键。 InnoDB支持建立多个列的外键,但被外键约束的父表上必须对这些列建立索引,并且子表上的外键列 和父表上索引上的顺序是一致的。默认情况下,当删除父表中被外键约束的记录时,会产生报错,但我们也可以通过在建外键索引时加上ON DELETE CASCADE 来级联的更新子表,更新同理。其他行为包括RESTRICT(限制父表的外键改动,默认值)、CASCADE(跟随父表的改动)、SET NULL(子表对应列设置为NULL)、SET DEFAULT(设置为默认值,InnoDB不支持,但Server层支持)、NO ACTION(无动作)。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: InnoDB foreign key 实现 Post Footer automatically generated by wp-posturl plugin for wordpress.


[MySQL 5.7.6] Generated Column

updated @2015-08-09, mysql-5.7.8-rc对generated column的改进:   InnoDB: InnoDB now supports secondary indexes on virtual generated columns. For more information, seeCREATE TABLE and Generated Columns. InnoDB: Virtual generated column values no longer occupy space in database rows. With this change, a table rebuild is no longer required when adding or dropping virtual generated columns. Virtual generated columns […]


[MySQL5.7.6]InnoDB native partition table

Worlog链接:http://dev.mysql.com/worklog/task/?id=6035 相关worklog: http://dev.mysql.com/worklog/task/?id=4305 官方博客介绍:http://mysqlserverteam.com/innodb-native-partitioning-early-access/ 在之前的版本中,分区表的分区管理模式是放在server层,对于底层引擎层而言并不存在分区表的概念,每个分区和普通的表,对InnoDB引擎而言都是等同等低位的。由于需要为每个分区建立handler,这种方式可能导致过多的资源浪费,例如bug#62536 和 bug#37252。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: [MySQL5.7.6]InnoDB native partition table Post Footer automatically generated by wp-posturl plugin for wordpress.


[MySQL5.7.6] 新的tablespace类型–general tablespace

从5.7.6开始,增加了一种新的 tablespace模式(成为general tablespace),实际上它和共享表空间比较类似:创建一个单独的ibd,ibd中包含多个表,兼容不同的格式。general tablespace没有库的概念,因此可以在多个库里建属于同一tablespace的表。   为了支持这TABLESPACE,主要做了两部分改动:Innodb层的支持,及Server层对MDL子模块的改动。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: [MySQL5.7.6] 新的tablespace类型–general tablespace Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL5.7.6: 通过序列区间来优化并行复制性能

Worklog: http://dev.mysql.com/worklog/task/?id=7165   我们知道,在MySQL5.7.2中增加了一种新的并行模式:为同时进入COMMIT阶段的事务分配相同的序列号,这些拥有相同序列号的事务在备库是可以并发执行的。   具体如何实现参阅我之前的一篇博客:http://mysqllover.com/?p=810   在之前的实现中,序列号是在binlog prepare阶段赋值,在engine commit(group commit的第三个阶段)之前递增,因此主库在GROUP COMMIT阶段的并发越高,在备库能够并发执行的事务越多。这个序列号被写入binlog中,备库根据序列号决定哪些事务可以并发执行。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7.6: 通过序列区间来优化并行复制性能 Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL 5.7.6: 如何不停服务开启复制拓扑内的GTID

相关worklog: http://dev.mysql.com/worklog/task/?id=7083    (强烈建议阅读) http://dev.mysql.com/worklog/task/?id=7592 Gtid作为5.6版本以来的杀手级特性,却因为不支持拓扑结构内开关而饱受诟病。如果你需要从未开启GTID的环境升级到开启GTID,需要把这个复制结构里的实例shutdown后,再重启。相信这对于任何24小时服务的互联网应用都是不可接受的。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 5.7.6: 如何不停服务开启复制拓扑内的GTID Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL 5.7.6: Make InnoDB fill factor settable

Worklog:  http://dev.mysql.com/worklog/task/?id=6747 git show 3f4abb52fbfe9118fc94a4b60876c16e5aa2e0e0 Make InnoDB fill factor settable (WL#6747) : This work by Yasufumi Kinoshita makes themerge_threshold settable per index. Until now it has been fixed at 50%. If the  amount of data within the page falls below the merge_threshold, e.g. when deleting a row or shortening it via an update, InnoDB will attempt to merge it […]


MySQL 5.7.6: wl#5757 InnoDB支持大page

worklog: http://dev.mysql.com/worklog/task/?id=5757 官方mysql 在git上代码比较零散,具体的实现我们可以参考webscalesql上的代码:https://reviews.facebook.net/D31107 或者在webscalesql的git上: git show ebd27a35db6ef2267efd69da392e5efdc77611a6 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 5.7.6: wl#5757 InnoDB支持大page Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL5.7 新特性: offline mode

在MySQL 5.7.5中,为server层增加了离线模式(offline mode),以便于管理员的升级维护工作。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7 新特性: offline mode Post Footer automatically generated by wp-posturl plugin for wordpress.


InnoDB ICP 代码路径

本文简单记录下和Index Condition Pushdown相关的代码路径 原创文章,转载请注明: 转载自Simple Life 本文链接地址: InnoDB ICP 代码路径 Post Footer automatically generated by wp-posturl plugin for wordpress.