MySQL-开发规范升级版
- 表存储引擎必须使用InnoDB
- 表字符集默认使用utf8,必要时候使用utf8mb4
- 禁止使用存储过程,视图,触发器,Event
- 禁止在数据库中存储大文件,例如照片,可以将大文件存储在对象存储系统,数据库中存储路径
- 禁止在线上环境做数据库压力测试
- 测试,开发,线上数据库环境必须隔离
- 库名,表名,列名必须用小写,采用下划线分隔
- 库名,表名,列名必须见名知义,长度不要超过32字符
- 库备份必须以bak为前缀,以日期为后缀
- 从库必须以-s为后缀
- 备库必须以-ss为后缀
- 单实例表个数必须控制在2000个以内
- 单表分表个数必须控制在1024个以内
- 表必须有主键,推荐使用UNSIGNED整数为主键
- 禁止使用外键,如果要保证完整性,应由应用程式实现
- 建议将大字段,访问频度低的字段拆分到单独的表中存储,分离冷热数据
- 根据业务区分使用tinyint/int/bigint,分别会占用1/4/8字节
- 根据业务区分使用char/varchar
- 根据业务区分使用datetime/timestamp
- 必须把字段定义为NOT NULL并设默认值
- 使用INT UNSIGNED存储IPv4,不要用char(15)
- 使用varchar(20)存储手机号,不要使用整数
- 使用TINYINT来代替ENUM
- 唯一索引使用uniq_[字段名]来命名
- 非唯一索引使用idx_[字段名]来命名
- 单张表索引数量建议控制在5个以内
- 组合索引字段数不建议超过5个
- 不建议在频繁更新的字段上建立索引
- 非必要不要进行JOIN查询,如果要进行JOIN查询,被JOIN的字段必须类型相同,并建立索引
- 理解组合索引最左前缀原则,避免重复建设索引,如果建立了(a,b,c),相当于建立了(a), (a,b), (a,b,c)
- 禁止使用select *,只获取必要字段
- insert必须指定字段,禁止使用insert into T values()
- 隐式类型转换会使索引失效,导致全表扫描
- 禁止在where条件列使用函数或者表达式
- 禁止负向查询以及%开头的模糊查询
- 禁止大表JOIN和子查询
- 同一个字段上的OR必须改写问IN,IN的值必须少于50个
- 应用程序必须捕获SQL异常
MySQL-开发规范升级版的更多相关文章
- [转载] 根据多年经验整理的《互联网MySQL开发规范》
原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...
- [转发] 老叶观点:MySQL开发规范之我见
原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- 建议收藏 - 专业的MySQL开发规范
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...
- 一份完整的 MySQL 开发规范,进大厂必看!
作者:听风 https://www.cnblogs.com/huchong/p/10219318.html 一.数据库命令规范 1.所有数据库对象名称必须使用小写字母并用下划线分割 2.所有数据库对象 ...
- 一文总结高并发大数据量下MySQL开发规范【军规】
在互联网公司中,MySQL是使用最多的数据库,那么在并发量大.数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的开发规范,希望能给大 ...
- 根据多年经验整理的《互联网MySQL开发规范》
一.基础规范 使用 INNODB 存储引擎 表字符集使用 UTF8 所有表都需要添加注释 单表数据量建议控制在 5000W 以内 不在数据库中存储图⽚.文件等大数据 禁止在线上做数据库压力测试 禁⽌ ...
- 《互联网MySQL开发规范》
一.基础规范 使用 INNODB 存储引擎 表字符集使用 UTF8 所有表都需要添加注释 单表数据量建议控制在 5000W 以内 不在数据库中存储图⽚.文件等大数据 禁止在线上做数据库压力测试 禁⽌ ...
- 老叶观点:MySQL开发规范之我见
来源:http://ourmysql.com/archives/1396 大多数MySQL规范在网上也都能找得到相关的分享,在这里要分享的是老叶个人认为比较重要的,或者容易被忽视的,以及容易被混淆的一 ...
- mysql开发规范(优化)
规范 库名.表名.字段名必须使用小写字母, 并采用下划线分割, 禁止超过32个字符(整齐.易读) 临时库.表名须以tmp加日期为后缀; 使用Innodb存储引擎.[好处: 支持事务和行级锁] 字符集统 ...
随机推荐
- HDU1402:A * B Problem Plus——题解
http://acm.hdu.edu.cn/showproblem.php?pid=1402 给出两个高精度正整数,求它们的积,最长的数长度不大于5e4. FFT裸题,将每个数位看做是多项式的系数即可 ...
- php配置说明
1上传文件限制配置 post_max_size = 200M upload_max_file_size = 200M
- Hbase(二)hbase建表
一.建表高级属性 下面几个 shell 命令在 hbase 操作中可以起到很到的作用,且主要体现在建表的过程中,看 下面几个 create 属性 1.bloomfilter 布隆过滤器 默认是 NON ...
- 链接错误 multiply defined (by misc_1.o and misc.o).
http://www.stmcu.org/module/forum/thread-286128-1-1.html *** Using Compiler 'V5.06 (build 20)', fold ...
- bzoj4774 修路
4774: 修路 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 290 Solved: 137[Submit][Status][Discuss] D ...
- 阿里云 centos7 tomcat 启动巨慢的解决方法(几分钟)
方法一: 通过修改Tomcat启动文件-Djava.security.egd=file:/dev/urandom 通过修改JRE中的java.security文件securerandom.source ...
- laravel添加日常备份任务
app/Console/Command/MySqlDump.php <?php namespace App\Console\Commands; use Illuminate\Console\Co ...
- [DeeplearningAI笔记]卷积神经网络2.9-2.10迁移学习与数据增强
4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9迁移学习 迁移学习的基础知识已经介绍过,本篇博文将介绍提高的部分. 提高迁移学习的速度 可以将迁移学习模型冻结的部分看 ...
- ssl证书生成方法
一般情况下,如果能找到可用的证书,就可以直接使用,只不过会因证书的某些信息不正确或与部署证书的主机不匹配而导致浏览器提示证书无效,但这并不影响使用. 需要手工生成证书的情况有: 找不到可用的证书 需要 ...
- ACM-ICPC2018 沈阳赛区网络预赛-D-Made In Heaven8
A*算法: A*,启发式搜索,是一种较为有效的搜索方法. 我们在搜索的时候,很多时候在当前状态,已经不是最优解了,但是我们却继续求解:这个就是暴力搜索浪费时间的原因. 我们在有些时候,往往可以根据一些 ...