网站建设介绍ppt,2万元最简单装修,vs2012建设空网站,免费申请无限流量卡【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化 阿里 MySQL 命名规范MySQL8 DDL的原子化 阿里 MySQL 命名规范
【强制】表名、字段名必须使用小写字母或数字#xff0c;禁止出现数字开头#xff0c;禁止两个下划线中间只出现数字。数据库字段名的修改代价… 【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化 阿里 MySQL 命名规范MySQL8 DDL的原子化 阿里 MySQL 命名规范
【强制】表名、字段名必须使用小写字母或数字禁止出现数字开头禁止两个下划线中间只出现数字。数据库字段名的修改代价很大因为无法进行预发布所以字段名称需要慎重考虑。 正例aliyun_adminrdc_configlevel3_name反例AliyunAdminrdcConfiglevel_3_name 【强制】禁用保留字如 desc、range、match、delayed 等请参考 MySQL 官方保留字。【强制】表必备三字段id, gmt_create, gmt_modified。 说明其中 id 必为主键类型为BIGINT UNSIGNED、单表时自增、步长为 1。gmt_create, gmt_modified 的类型均为 DATETIME 类型前者现在时表示主动式创建后者过去分词表示被动式更新 【推荐】表的命名最好是遵循 “业务名称_表的作用”。 正例alipay_task 、 force_project、 trade_config 【推荐】库名与应用名称尽量一致。【参考】合适的字符存储长度不但节约数据库表空间、节约索引存储更重要的是提升检索速度。
对象年龄区间类型字节表示范围人150岁之内tinyint unsigned1无符号值0到255龟数百岁smallint unsigned2无符号值0到65535恐龙化石数千万年int unsigned4无符号值0到约43亿太阳约50亿年bigint unsigned8无符号值0到约10的19次方
MySQL8 DDL的原子化
MySQL 8.0引入了DDL数据定义语言的原子性特性通过统一数据字典DD和DDL_LOG机制来确保DDL操作的原子性。 原子DDL的定义原子DDL语句将数据字典更新、存储引擎操作和与DDL操作相关联的二进制日志写入组合成单个原子操作。这意味着即使服务器在操作过程中停止运行操作也可以提交将适用的更改保存到数据字典、存储引擎和二进制日志中或者回滚。 数据字典的统一在MySQL 8.0之前元数据存储在元数据文件、非事务表和存储引擎特定的字典中这需要中间提交。MySQL 8.0引入了统一的数据字典DD并废弃了server层的元数据如.frm、.opt、.par、.trg等将InnoDB的元数据抽象出一条DD接口供server层和InnoDB层共用。这消除了中间提交的障碍使得将DDL语句操作重构为原子操作成为可能。 DDL_LOG机制为了确保DDL操作的原子性MySQL 8.0还引入了一套DDL_LOG机制。在执行DDL的过程中会记录DDL操作到DDL_LOG表中。DDL_LOG表是InnoDB引擎表通过保证DDL_LOG数据与DD数据字典修改达成一致来解决DD数据字典修改、引擎层修改和写binlog一致性问题。在DDL事务提交后会读取DDL_LOG内容并进行回放执行以完成DDL操作的收尾动作。 原子DDL的特性 原子DDL支持表DDL语句和非表DDL语句。与表相关的DDL操作需要存储引擎支持目前只有InnoDB存储引擎支持原子DDL。DDL语句无论是原子的还是其他的都会隐式地结束当前会话中任何活动的事务。这意味着DDL语句不能在另一个事务中执行不能在事务控制语句如START TRANSACTION中执行或者与同一事务中的其他语句结合使用。原子化的DDL操作在执行过程中如果MySQL服务突然停止不会像之前的版本那样生成一个报错文件而是会回滚操作。
综上所述遵循阿里MySQL命名规范可以提高数据库的可读性和可维护性而MySQL8 DDL的原子化特性则确保了DDL操作的一致性和可靠性。