美文网首页
mysql优化笔记(1)----数据库设计规范

mysql优化笔记(1)----数据库设计规范

作者: 回眸淡然笑 | 来源:发表于2022-09-15 22:39 被阅读0次

1数据库命名规范

1 数据库对象名称必须使用小写字母并用下划线分割
大小写敏感
2 所有数据库对象名称禁止使用mysql保留字段
'select id,username,from,age from tb_user',此处两个from,mysql无法区分
3 数据库对象的命名要能够做到见名识意,并且最好不要超过32个字符
举例 京东商城数据库 jd_shopdb,京东商城用户账号表 shop_account
4 临时表必须以tmp为前缀并以日期为后缀,备份库,备份表必须以bak为前缀并且以日期为后缀
5 所有储存相同数据的列名和列类型必须一致,如下面两个表中用到的customer_login 表的customer_id 字段

CREATE TABLE customer_info(
customer_info_id int unsigned AUTO_INCREMENT not null comment '自增id',
customer_id int unsigned not null comment 'customer_login表的自增id',
customer_name varchar(20) not null comment '用户真实姓名',
identity_card_type tinyint not null default 1 comment '证件类型',
identity_card_no varchar(20) comment '证件号码'
)
CREATE TABLE order_master(
order_id int unsigned AUTO_INCREMENT not null comment '自增id',
order_sn bigint unsigned not null comment '订单编号',
customer_id int unsigned not null comment 'customer_login表的自增id'
)

2数据库基本设计规范

1 所有表必须使用Innodb储存引擎
支持事务,行级锁,更好的恢复性,高并发下性能更好
2 数据库和表的字符集统一使用UTF8mb4,要确保库表字段字符集相同,mysql中UTF8(即UTF8mb3)汉字占3个字节,UTF8mb4汉字占4个字节,ASCII码占1个字节,注意在UTF8mb4字符集下定义一个char(20),实际占用80个字节,可保存20个中文
3 所有表和字段都要添加注释
方便后期维护数据字典
4 尽量控制单表数据的大小,建议控制在500万行以内
并不是mysql表限制,是因为修改表结构,备份和恢复数据都会有很大的困难,mysql储存多少数据,是由储存配置和文件系统决定的(32位win系统中当个文件不能超过2G),可以对历史数据归档,分库分表等手段控制单表大小,分区表实际上在物理上表现为多个文件,逻辑上表现为一个整体,跨分区查询效率可能更低,当多个分区在同一个磁盘上时io性能提升不大
5 尽量做到冷热数据分离,减小表的宽度,(最宽为4096列)
6 经常一起使用的列放到一个表中
7 禁止在表中建立预留字段
8 禁止早数据库中储存图片,文件等二进制数据
9 禁止在线上做数据库压力测试
10 禁止从开发环境,测试环境直连成产环境数据库

3数据库索引设计规范

1 限制每张表上的索引数量
建议单表索引不超过5个,索引可以增加查询效率,同时也会降低插入和更新效率
2 每个Innodb表必须有一个主键,不使用更新频繁的列作为主键,不使用UUID,MD5,HASH,字符串作为主键,
3 通常对where从句中的字段以及包含在order by,group by,distinct中的字段以及多表join的关联列建立索引
4 联合索引列的顺序,应当把区分度(唯一值的数量除以表的总行数)最高的列放在联合索引最左侧,其次把字段长度小的列放在左侧,最后把使用最频繁的列放在最左侧
5 避免建立冗余索引(primarykey(id),index(id),unique index(id))和重复索引(index(a,b,c),index(a,b),index(a))
6 对于频繁的查询优先考虑使用覆盖索引(所有字段加索引)
避免Innodb表进行索引的二次查询
可以把随机IO变为顺序IO加快查询效率
7 尽量避免使用外键(不使用外键约束,但是要在关联键上建立索引),外键会影响父表和子表的写操作

4数据库字段设计规范

满足第三范式

相关文章

  • 数据库设计三范式与反范式

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 第一范式: 1、数据库的所有...

  • 数据库设计规范

    【MySQL】MySQL数据库设计规范 1. 规范背景与⽬的 MySQL数据库与 Oracle、 SQL Serv...

  • Mysql 规范

    Mysql 规范 数据库命名规范总结 数据库基本设计规范 索引设计规范 数据库字段设计规范 数据库SQL开发规范 ...

  • MySql表设计与优化

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 1、实体关系分析 实体关系需...

  • mysql优化笔记(1)----数据库设计规范

    1数据库命名规范 1 数据库对象名称必须使用小写字母并用下划线分割大小写敏感2 所有数据库对象名称禁止使用mysq...

  • MySQL 数据库设计规范(存档)

    MySQL 数据库设计规范 目录 1. 规范背景与目的 2. 设计规范2.1 数据库设计2.1.1 通用命名约定2...

  • mysql基础

    mysql添加外键的4种方式 MySQL基础考点1 MySQL基础考点2 MySQL数据库六大设计规范总结1 My...

  • 数据库规范

    Tips:高性能可扩展mysql视频学习记录(一)1.数据库的命名规范 2.数据库基础设计规范 3.索引设计规范(...

  • 无标题文章

    目录 笔记大型项目优化概述大型项目优化的方向代码优化数据库优化缓存优化架构优化Memcache与MySQL比较语法...

  • mysql 设计规范

    MySQL数据库设计规范目录规范背景与目的设计规范2.1 数据库设计2.1.1 库名2.1.2 表结构2.1.3 ...

网友评论

      本文标题:mysql优化笔记(1)----数据库设计规范

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