国内最专业的IT技术学习网

Mysql数据库

当前位置:主页 > Mysql数据库 >

银河官网:一份完整的MySQL开发规范,进大厂必看!

发布时间:2019/09/10标签:   mysql      数据库      索引    点击量:

原标题:银河官网:一份完整的MySQL开发规范,进大厂必看!

6、禁止使用SELECT * 必须使用SELECT <字段列表> 查询

1、出现在SELECT、UPDATE、DELETE语句的WHERE从句中的列

没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好

如:insert into values ('a','b','c');

因为这样会增加查询优化器生成执行计划的时间。

覆盖索引的好处:

把原来一个DDL操作,分解成多个小的批次进行。

子查询性能差的原因:

推荐在程序中获取一个随机值,然后从数据库中获取数据的方式

因为:无符号相对于有符号可以多出一倍的存储空间

不要使用更新频繁的列作为主键,不适用多列主键(相当于联合索引) 不要使用UUID、MD5、HASH、字符串列作为主键(无法保证数据的顺序增长)。

3、每个Innodb表必须有个主键

MySQL限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节 减少磁盘IO,保证热数据的内存缓存命中率(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作)

where create_time >= '20190101' and create_time < '20190102' 

3、多表join的关联列

建议把BLOB或是TEXT列分离到单独的扩展表中

使用left join或 not exists来优化not in操作

分区表在物理上表现为多个文件,在逻辑上表现为一个表 谨慎选择分区键,跨分区查询效率可能更低 建议采用物理分表的方式管理大数据

九、索引SET规范

原因

TIMESTAMP 占用4字节和INT相同,但比INT可读性高

2、ENUM类型的ORDER BY操作效率低,需要额外操作

三、数据库字段设计规范

1、非精准浮点:float,double

500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题

2、尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好);

3、充分利用表上已经存在的索引

大批量修改数据,一定是在一个事务中进行的,这就会造成表中大批量数据进行锁定,从而导致大量的阻塞,阻塞会对MySQL的性能产生非常大的影响。

UNSIGNED INT 0~4294967295 

7、禁止使用不含字段列表的INSERT语句

where date(create_time)='20190101' 

不推荐:

Innodb是以聚集索引的顺序来存储的,对于Innodb来说,二级索引在叶子节点中所保存的是行的主键信息,

1、为数据库迁移和分库分表留出余地

5、使用TIMESTAMP(4个字节)或DATETIME类型(8个字节)存储时间

主从环境中,大批量操作可能会造成严重的主从延迟,大批量的写操作一般都需要执行一定长的时间,而只有当主库上执行完成后,才会在其他从库上执行,银河官网,所以会造成主库与从库长时间的延迟情况

9、避免使用JOIN关联太多的表

冗余索引示例:index(a,b,c)、index(a,b)、index(a)

1、避免大表修改产生的主从延迟

1、所有表必须使用Innodb存储引擎

6、尽量做到冷热数据分离,减小表的宽度

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号