美文网首页
MySQL笔记整理(一)

MySQL笔记整理(一)

作者: guaren2009 | 来源:发表于2020-05-11 14:16 被阅读0次

    一、MySQL建表规范

    模板示例:

    create table 表名(

    id int(11)  not null auto_increment comment 'id自增长', 

    name varchar(255) comment '姓名',

    age int(3) comment '年龄',

    .....

    .....

    create_user varchar(255) comment '创建人',

    create_time timestamp not null default current_timestamp comment '创建时间',

    update_user varchar(255) comment '更新人',

    update_time timestamp not null default current_timestamp on update current_timestamp comment '更新时间',

    primary key(id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '表注释';

    具体示例:

    create table ruoze_t1(

    id int(11)  not null auto_increment comment 'id自增长', 

    name varchar(255) comment '姓名',

    age int(3) comment '年龄',

    create_user varchar(255) comment '创建人',

    create_time timestamp not null default current_timestamp comment '创建时间',

    update_user varchar(255) comment '更新人',

    update_time timestamp not null default current_timestamp on update current_timestamp comment '更新时间',

    primary key(id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '表注释';

    二、注意点

    2.1、表名称和字段不要用中文或者拼音

    2.1、要有固定统一的风格

    与系统中原有的表保持风格一致

    2.3、第一个字段必须是id主键自增,无业务意义

    主要参考 https://www.jianshu.com/p/b8d6d809fce3

    (1)主键自增节省存储空间

    相对于UUID做主键,用自增id做主键更节省空间,尤其是Innodb引擎下,二级索引中存储的是主键的值,这样也可以减小索引的大小

    (2)对Innodb这种聚集型索引友好

    Innodb这种聚集索引,数据是按照主键进行排序的。而UUID的无序性导致在插入数据的时候,在Innodb引擎的情况下,IO压力较大,插入效率降低

    2.4、一张表只有一个主键

    2.5、创建人、创建时间 、更新人、更新时间务必加上

    2.6、comment注释务必加上

    实际生产中,表和字段没有注释实在是太坑了

    2.7、明确指定engine和charset字符集

    这个是经常遇到的坑,如果不明确指定,引擎和字符集会按照所在库的引擎和字符集来设置,容易引发一些问题,例如字符集默认是latin1导致中文乱码

    我们生产中(MySQL5.6)因历史遗留问题,一个库的引擎建为MyISAM,而以前建表的时候没有指定引擎,也没人在意这个,导致库中存有大量的MyISAM表,而某次的MySQL意外宕机,导致表损坏,查询数据时出现:Incorrect key file for table: '...'. Try to repair it的问题,修复起来是真的慢。

    从实践认知来看,MyISAM引擎除了事务、锁等与Innodb有不同以外,MyISAM的表更易损坏

    相关文章

      网友评论

          本文标题:MySQL笔记整理(一)

          本文链接:https://www.haomeiwen.com/subject/axdunhtx.html