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 status\G;

//查看日志
show binary logs;

//kill查询
kill ID_number;

//查看数据库
show databases;

//查看表
use db_name;show tables;

//查看表结构
show create table tbl_name\G;

//查看数据库
select database();
 
//查看当前用户
select user();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴 韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值