Mysql【有与无】【规范】数据库命名规范
1.建库规范
-
数据库,表,字段,索引全部用小写英文字母,英文单词之间用下划线(_)隔开
2.表字段规范
-
列设计规范根据业务区分使用tinyint/int/bigint,分别会占用1/4/8字节。 使用tinyint来代替enum,enum增加新值要进行DDL操作。 根据业务区分使用char/varchar解读: 字段长度固定,或者长度近似的业务场景,适合使用char,能够减少碎片,查询性能高。 字段长度相差较大,或者更新较少的业务场景,适合使用varchar,能够减少空间 。 使用varchar(20)存储手机号,不要使用整数 设置lower_case_table_names=1,是使用大小写不敏感,数据库存储用小写,默认值为0。 show variables like lower_case_table_names;
3.建表规范
-
每个表需要指定表主键。 字段名称用英文小写字母,单词之间用下划线(_)隔开。 列名必须见名知义。 每个字段需要有备注,字符串类型字段默认不能为NULL,但数字类型,时间类型的字段可以是NULL。 不要指定表存储引擎,字符编码。 表备注需清晰:如:run_status:运行状态 | 【0:未运行】【1:已运行】【2:已停止】|checkbox用|分隔开是为了模板自动生成代码时进行前端的JSON构建输出 下面5个字段是必须的: id: varchar(36):主键唯一ID,新的设计可以考虑自增ID,需要考虑数据迁移方案 created_time: datetime,创建时间 created_user: varchar(36),创建人ID last_modified_time: datetime,最后修改时间 last_modified_user: varchar(36),最后修改人ID status: int状态【0:正常】【1:删除】
4.索引规范
4.1.建索引规则
-
唯一索引使用uni_[字段名]来命名。 非唯一索引使用idx_[字段名]来命名。 理解组合索引最左前缀原则,避免重复建设索引,如果建立了(a,b,c),相当于建立了(a), (a,b), (a,b,c) create unique index uni_idcardno on base_users(idcardno); -- 唯一索引 create index idx_username_mobile on base_users(username,mobile); -- 普通索引 .
4.2.最佳索引规则
-
Primary key > Unique key > 一般索引
附录
A.MySQL备份还原
--备份数据库 mysqldump -uroot -pmysql --set-gtid-purged=on --single-transaction --triggers --routines --events --databases sys > db_name.sql --表备份 mysqldump -uroot -pmysql --single-transaction --set-gtid-purged=on --triggers --routines --events --tables zabbix usrgrp > usrgrp.sql --备份表结构 -d, --no-data No row information.
--mydumper还原 mydumper -u root -p mysql -h 192.168.50.x --port 3306 --triggers --events --routines --daemon --database zabbix -o ./data/ --MySQL还原 mysql -uroot -pmysql --database dbname < x.sql
B.MySQL慢查询优化
yum install –y tcpdump percona-toolkit pt-query-digest/mysqldumpslow //用tcpdump抓包工具 tcpdump -s 65535 -x -nn -q -i any -c 1000 port 3306 > mysql.tcp.txt pt-query-digest --type tcpdump mysql.tcp.txt
C.常用命令
//查看连接 show processlist; //数据库状态 status //查看Innodb状态 show engine innodb statusG; //查看日志 show binary logs; //kill查询 kill ID_number; //查看数据库 show databases; //查看表 use db_name;show tables; //查看表结构 show create table tbl_nameG; //查看数据库 select database(); //查看当前用户 select user();
上一篇:
IDEA上Java项目控制台中文乱码