查一个字段中字符集超过30的列_详细解读MySQL的30条军规

d2efb2eaab9690a969f1b8d58d2b7f3e.png

一、基础规范

(1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高

(2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间

(3)数据表、数据字段必须加入中文注释 解读:N年后谁他妈知道这个r1,r2,r3字段是干嘛的

(4)禁止使用存储过程、视图、触发器、Event 解读:高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”。数据库擅长存储与索引,CPU计算还是上移吧

(5)禁止存储大文件或者大照片 解读:为何要让数据库做它不擅长的事情?大文件和照片存储在文件系统,数据库里存URI多好

二、命名规范

(6)只允许使用内网域名,而不是ip连接数据库

(7)线上环境、开发环境、测试环境数据库内网域名遵循命名规范 业务名称:xxx 线上环境:dj.xxx.db 开发环境:dj.xxx.rdb 测试环境:dj.xxx.tdb 从库在名称后加-s标识,备库在名称后加-ss标识 线上从库:dj.xxx-s.db 线上备库:dj.xxx-sss.db

(8)库名、表名、字段名:小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用

(9)表名t_xxx,非唯一索引名idx_xxx,唯一索引名uniq_xxx

三、表设计规范

(10)单实例表数目必须小于500

(11)单表列数目必须小于30

(12)表必须有主键,例如自增主键 解读: a)主键递增,数据行写入可以提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用 b)主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率 c) 无主键的表删除,在row模式的主从架构,会导致备库夯住

(13)禁止使用外键,如果有外键完整性约束,需要应用程序控制 解读:外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,十分影响sql 的性能,甚至会造成死锁。高并发情况下容易造成数据库性能,大数据高并发业务场景数据库使用以性能优先

四、字段设计规范

(14)必须把字段定义为NOT NULL并且提供默认值 解读: a)null的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化 b)null 这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多 c)null值需要更多的存储空,无论是表还是索引中每行中的null的列都需要额外的空间来标识 d)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、<、<>、!=、not in这些操作符号。如:where name!='shenjian',如果存在name为null值的记录,查询结果就不会包含name为null值的记录

(15)禁止使用TEXT、BLOB类型 解读:会浪费更多的磁盘和内存空间,非必要的大量的大字段查询会淘汰掉热数据,导致内存命中率急剧降低,影响数据库性能

(16)禁止使用小数存储货币 解读:使用整数吧,小数容易导致钱对不上

(17)必须使用varchar(20)存储手机号 解读: a)涉及到区号或者国家代号,可能出现+-() b)手机号会去做数学运算么? c)varchar可以支持模糊查询,例如:like“138%”

(18)禁止使用ENUM,可使用TINYINT代替 解读: a)增加新的ENUM值要做DDL操作 b)ENUM的内部实际存储就是整数,你以为自己定义的是字符串?

五、索引设计规范

(19)单表索引建议控制在5个以内

(20)单索引字段数不允许超过5个 解读:字段超过5个时,实际已经起不到有效过滤数据的作用了

(21)禁止在更新十分频繁、区分度不高的属性上建立索引 解读: a)更新会变更B+树,更新频繁的字段建立索引会大大降低数据库性能 b)“性别”这种区分度不大的属性,建立索引是没有什么意义的,不能有效过滤数据,性能与全表扫描类似

(22)建立组合索引,必须把区分度高的字段放在前面 解读:能够更加有效的过滤数据

六、SQL使用规范

(23)禁止使用SELECT *,只获取必要的字段,需要显示说明列属性 解读: a)读取不需要的列会增加CPU、IO、NET消耗 b)不能有效的利用覆盖索引 c)使用SELECT *容易在增加或者删除字段后出现程序BUG

(24)禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性 解读:容易在增加或者删除字段后出现程序BUG

(25)禁止使用属性隐式转换 解读:SELECT uid FROM t_user WHERE phone=13812345678 会导致全表扫描,而不能命中phone索引,猜猜为什么?(这个线上问题不止出现过一次)

(26)禁止在WHERE条件的属性上使用函数或者表达式 解读:SELECT uid FROM t_user WHERE from_unixtime(day)>='2017-02-15' 会导致全表扫描 正确的写法是:SELECT uid FROM t_user WHERE day>= unix_timestamp('2017-02-15 00:00:00')

(27)禁止负向查询,以及%开头的模糊查询 解读: a)负向查询条件:NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等,会导致全表扫描 b)%开头的模糊查询,会导致全表扫描

(28)禁止大表使用JOIN查询,禁止大表使用子查询 解读:会产生临时表,消耗较多内存与CPU,极大影响数据库性能

(29)禁止使用OR条件,必须改为IN查询 解读:旧版本Mysql的OR查询是不能命中索引的,即使能命中索引,为何要让数据库耗费更多的CPU帮助实施查询优化呢?

(30)应用程序必须捕获SQL异常,并有相应处理

最后:

可能有人会觉得如果抛开使用环境,说禁止这禁止那的,说的太过于绝对了,相信咱们一个开发团队水平不会这么低。

确实,这些规范就像是数据库范式,能遵守尽量遵守,如果非要违背一定有理由,比如提高性能等,总的来说还是得看我们的实际情况,灵活运用。

好了,点赞关注看视频,学习动力走一波。

我是一咻,读快点就是 咻er~一个没有节操的程序员

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThinkPHP 5使用OSS

摘要&#xff1a; ThinkPHP 5使用OSS示例。准备工作登录阿里云官网&#xff0c;将鼠标移至产品找到并单击对象存储OSS打开OSS产品详情页面。在OSS产品详情页中的单击立即开通。开通服务后&#xff0c;在OSS产品详情页面单击管理控制台直接进入OSS管理控制台界面。您也可以单击位…

Linux环境_源码安装LibreOffice实现文件在线预览doc,doxc,xls,xlsx,ppt,pptx 文件

因业务需求需要&#xff0c;利用LibOffice可以打开的文档的转换。 服务器版本 环境系统版本LinuxRed Hat Enterprise Linux Server release 7.6 (Maipo)LinuxCentOS Linux release 7.6 需要准备软件包 软件及版本下载链接LibreOffice_6.3.2_Linux_x86-64_rpm.tar.gzhttps://w…

关于云原生需要了解什么

戳蓝字“CSDN云计算”关注我们哦&#xff01;尽管随处可闻云原生&#xff0c;却鲜少有人告诉你到底什么是云原生&#xff0c;若是找资料来看&#xff0c;读完大多会感觉云缭雾绕&#xff0c;一知半解&#xff0c;总之虚得很&#xff0c;甚至会让你一度怀疑自己的智商&#xff0…

仅使用NumPy完成卷积神经网络CNN的搭建(附Python代码)

摘要&#xff1a; 现有的Caffe、TensorFlow等工具箱已经很好地实现CNN模型&#xff0c;但这些工具箱需要的硬件资源比较多&#xff0c;不利于初学者实践和理解。因此&#xff0c;本文教大家如何仅使用NumPy来构建卷积神经网络&#xff08;Convolutional Neural Network , CNN&a…

SpringBoot 使用LibreOffice 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件

接上一篇&#xff1a;linux环境源码安装unoconv Linux环境_源码安装Unoconv实现文件在线预览doc&#xff0c;doxc&#xff0c;xls&#xff0c;xlsx&#xff0c;ppt&#xff0c;pptx 文件 https://gblfy.blog.csdn.net/article/details/103540694 接上一篇&#xff1a;linux环境…

裸辞面11家python公司,拿到4个offer!网友:买了简历置顶会员吗?

我一直认为&#xff0c;敢裸辞的只有2种人&#xff1a;1、能力足够强&#xff0c;即使裸辞也不会被财务问题所困&#xff0c;更不愁找工作。2、年轻气盛&#xff0c;遇到傻X领导和傻X同事&#xff0c;绝对0容忍&#xff01;但是最近我在刷某乎的时候&#xff0c;发现了第三种人…

万用表怎么测电池内阻_数字万用表和指针万用表,两者怎么选?

​万用表又称为复用表、多用表、三用表、繁用表等&#xff0c;一般以测量电压、电流和电阻为主要目的。是一种多功能、多量程的测量仪表&#xff0c;可测量直流电流、直流电压、交流电流、交流电压、电阻和音频电平等&#xff0c;有的还可以测交流电流、电容量、电感量及半导体…

在Linux系统上安装Git

Git是目前流行的非常好用的版本控制工具&#xff0c;这里介绍两种安装方式&#xff0c;1、yum安装&#xff0c;2、从github上下载最新的源码编译后安装 文章目录一、yum安装二、从GitHub上下载最新的源码编译后安装1、下载tar包2、上传tar包3、解压压缩包4、进入到解压后的文件…

Michael Jordan:当下的AI其实都是伪“AI”

摘要&#xff1a; Michael Jordan认真的解读当下的AI到底是什么&#xff1f;人工智能&#xff08;AI&#xff09;是未来的趋势&#xff0c;这句话是技术人员、学者、记者和风险投资家一致赞同的。如同从技术学术领域跨越到普遍行业的许多词语一样&#xff0c;在使用这些词语的时…

如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!

戳蓝字“CSDN云计算”关注我们哦&#xff01;相信大部分人都经历过入职第一天的手忙脚乱与无所适从&#xff0c;一份新的工作本就是一项全新的挑战&#xff0c;各种设备的安装与链接、安装适应任何新任务的应用流程&#xff0c;以及令人头疼的各种密码&#xff0c;凡此种种都为…

vb 打印机 任意尺寸_创新小黑管“省心省力”惠普Laser NS 1020 智能闪充激光打印机...

对于小型公司、个人工作室或者有打印需求的家庭用户来说&#xff0c;一款优秀的轻巧、便携的打印机必不可少。前不久&#xff0c;惠普推出了全新一代惠普Laser NS 1020打印机&#xff0c;采用突破性的智能闪充碳粉技术&#xff0c;可实现15秒充粉&#xff0c;简便省时&#xff…

隐私与机器学习,二者可以兼得吗?

摘要&#xff1a; 隐私数据与机器学习看似矛盾&#xff0c;其实不然。如何有效保护机器学习训练中的隐私数据&#xff1f;谷歌专家给出了答案——PATE框架&#xff0c;就算你不太懂隐私保护的知识&#xff0c;也可以通过PATE框架来保护机器学习里的训练数据。最近关于互联网隐私…

SpringBoot 深度调优,让你的项目飞起来!

文章目录项目调优一、修改配置文件项目调优 作为一名工程师&#xff0c;项目调优这事&#xff0c;是必须得熟练掌握的事情。 在SpringBoot项目中&#xff0c;调优主要通过配置文件和配置JVM的参数的方式进行。 一、修改配置文件 关于修改配置文件application.properties。 …

青年PM倪超:想让程序员多一点点幸福感

摘要&#xff1a; 本文主人公倪超&#xff0c;在内部&#xff0c;同事都习惯叫他花名银时&#xff0c;是阿里云产品经理。前不久&#xff0c;他所负责的企业级分布式应用服务EDAS&#xff0c;荣获了公司2018财年年度最佳产品奖。在五四青年节来临之际&#xff0c;我们有幸近距离…

C语言--if...else语句【语法讲解】

一.if...else语句的介绍 if…else 语句是编程中常用的一种分支语句&#xff0c;用于根据条件执行不同的操作。 它的基本语法如下&#xff1a; if (条件表达式) {// 当条件表达式为真时执行的代码块 } else {// 当条件表达式为假时执行的代码块 } 当条件表达式为真时&#xff…

黑苹果找不到触控板_猫和老鼠手游:好友位不足却找不到人开黑?玩家给好友系统支招...

猫追鼠&#xff0c;鼠躲猫&#xff0c;欢乐互动乐逍遥&#xff0c;欢迎你来到猫和老鼠游戏学院第126期。随着开学季的到来&#xff0c;我们在游戏中会发现一个有趣的现象&#xff1a;任何时候打开自己的好友界面&#xff0c;里面都是灰色一片&#xff0c;不可否认这确实和玩家群…

Serverless 的喧哗与骚动

戳蓝字“CSDN云计算”关注我们哦&#xff01;导读&#xff1a;从 2016 年 AWS 发布 Lambda 以来&#xff0c;全世界的开发者和云厂商对 Serverless 的热情在不断高涨。假设不想在开发应用程序并将其部署在服务器上的过程细节上花费精力&#xff0c;是否有一种简单的架构模型能够…

2018年最佳深度学习书单

摘要&#xff1a; AI人才缺口巨大&#xff1f;如果你想成为AI革命中的一员&#xff0c;那么你就必须要学习深度学习&#xff0c;看看这12本书&#xff0c;它们将成为你的利器&#xff01;我相信你应该知道人工智能&#xff0c;尤其是深度学习在过去5年左右取得了不错的进步。 深…

双绞线传输距离_视频监控系统中布线常用传输线缆分类及制作方法

同轴电缆&#xff1a;同轴电缆同轴电缆可分为两种基本类型&#xff0c;基带同轴电缆和宽带同轴电缆。目前基带是常用的电缆&#xff0c;其屏蔽线是用铜做成的网状的&#xff0c;特征阻抗为75(如RG-8、RG-58等)&#xff1b;宽带同轴电缆常用的电缆的屏蔽层通常是用铝冲压成的&am…

国庆出游,这个银行卡大小的充电宝一定要带

说到充电宝&#xff0c;不知道有没有人跟我有同样的烦恼&#xff1a;5000毫安容量小&#xff0c;不够用。10000毫安容量够用&#xff0c;但又大又笨重&#xff0c;拿在手里充电超累的&#xff0c;还占地方&#xff01;尤其是旅行出差的时候&#xff0c;这种体验更加明显&#x…