一位年薪百万的架构师,花了3小时培训MySql知识,1小时抵一个月
我突然收到了一个红包。打开一看是52元,激动不已,钱够两天吃的了,哈哈。
晚上,我们聆听了建筑师的培训。内容为《数据库应用开发规范》。我时而清醒,时而徘徊。这与离散数学的难度相当。不幸的是,我的知识有限,无法给予架构师同样深入的解释。我只是从中吸取了教训。取十分之一,发表你的看法。
本次培训的目的主要是让大家掌握日常开发中一些必要的数据库约束。开发中遵循一些规则,写出简洁高效的SQL语句,讲解一些底层知识。
上一节提到了数据库相关元素的命名规范。本节继续。喜欢的朋友可以看看之前的文章。
为了更容易吸收知识,这样的安排顺序与项目开发过程中的顺序一致,以便能够更快地掌握相关知识。
顺序是:表设计——字段设计——字符集选择——慢sql排查——sql优化——总结
一、表设计
1.您是否严格遵守表格设计三大范式?
第一范式(1NF):数据库中的字段具有单一属性,不能进一步划分。这个单一属性由基本类型组成,包括整数、字符等。目前的关系数据库都满足第一范式。
第二范式(2NF) : 实体属性完全依赖于主键。
第三范式(3NF) : 非关键字段对任何候选关键字段不存在传递函数依赖性。
答:不需要
想象一下,一两个表的数据非常大,一个是2000万,另一个是4000万。如果想从2000万条数据中获取4000万条表数据的某个列值,通常会使用join、exists、in等来实现。但是优化查询会花费很长时间。
想象一下,如果设计表的时候,那一列字段冗余到2000万条数据,会不会少一个相关的查询?通过制作冗余字段,数据查询效率大大提高,是一个不错的选择。
2、join的数量要控制在2个
冯诺依曼系统将计算机归结为以存储为核心的计算机架构。几十年来没有人动摇其教义。
可见数据在计算机系统中占有多么重要的地位,在获取数据时总是需要将一张表与另一张表关联起来。
这时就提出了强制性要求。 Join只能在两个表之间进行,并且必须使用explain来查询是否使用索引。
如果确实想关联多个表的数据,可以通过接口关联。
在微服务开发过程中,一般遵循开闭原则,即对扩展开发开放,对修改关闭。
3、使用InnoDB引擎
InnoDB表基于聚集索引构建,对于主键查询具有高性能。
InnoDB在内部做了很多优化,包括从磁盘读取数据时可预测的预读、可以在内存中自动创建哈希索引以加速读取操作的自适应哈希索引以及可以加速插入的自适应哈希索引。操作的插入缓冲区。
4、所有的表都要包含这三个字段
ID、创建时间、更新时间
id必须为主键,类型为bigint unsigned,单表自增,步长为1,这对于索引也很重要。
create_time和update_time的类型都是datetime类型。前者表示现在时主动创造,后者过去分词表示被动更新。
需要在create_time字段上创建普通索引,以应用按时间范围搜索的需要。
例子:
`id` bigint unsigned NOT NULL AUTO_INCRMENT COMMENT ‘id’,
`create_time` 日期时间DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
`update_time` 日期时间DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
5、字符集统一使用utf8mb4,字符集校对规则选择默认值utf8mb4_general_ci
首先我们来介绍一下表情符号(用于在电子邮件和短信等电子通信中表达情感的数字图像)
如果您的系统是App,则必须使用utf8mb4编码。不然以后说到留言板功能、弹幕等功能的时候,你真的会欲哭无泪。
如果你是web系统,也必须使用utf8mb4。如果你需要富文本格式的内容,那么表情符号肯定会涉及到。
统一的字符集对于以后的索引关联也非常重要。之前的字段关联不需要convert转换字符集才能使索引生效。
用户评论
凝残月
哇,年薪百万的架构师都这么努力,我等凡人更要加油学习了!3小时能抵一个月,看来效率真的很重要啊。
有15位网友表示赞同!
冷月花魂
这3小时培训效果真好,比我自己摸索一个月都强多了。架构师的经验果然不是盖的。
有10位网友表示赞同!
南宫沐风
1小时抵一个月?这效率也太吓人了,我一个月都学不到这么多,真是自叹不如。
有8位网友表示赞同!
孤独症
年薪百万的架构师都这么注重MySQL,我们这些小虾米更要跟紧脚步了。
有19位网友表示赞同!
嗯咯
3小时能抵一个月,那得是什么级别的培训啊?我也要去报名学习了。
有8位网友表示赞同!
你身上有刺,别扎我
看了这个,我对自己又失望又佩服,失望是因为自己学得慢,佩服的是架构师的效率。
有17位网友表示赞同!
有你,很幸福
1小时抵一个月,这是神速啊!我也想提高自己的效率,但总是做不到。
有12位网友表示赞同!
此刻不是了i
年薪百万的架构师都这么注重MySQL,我们这些做开发的岂能不重视?
有7位网友表示赞同!
凉城°
3小时能抵一个月,这让我想起了那句“时间就是金钱”,学习也要讲究方法。
有8位网友表示赞同!
淡抹丶悲伤
架构师培训MySQL只用了3小时,我一个月都学不进去,真是差距啊。
有18位网友表示赞同!
我就是这样一个人
学习了,学习了!年薪百万的架构师都这么勤奋,我还有什么理由不努力呢?
有16位网友表示赞同!
服从
1小时抵一个月,看来我得改变自己的学习方法,提高效率。
有17位网友表示赞同!
有阳光还感觉冷
这效率太惊人了,我一个月都学不透MySQL,架构师是怎么做到的?
有9位网友表示赞同!
残花为谁悲丶
年薪百万的架构师都这么专注,我们这些普通员工更要努力了。
有14位网友表示赞同!
轨迹!
3小时能抵一个月,这是不是意味着我每天只要专注3小时,就能提升自己呢?
有16位网友表示赞同!
红玫瑰。
架构师的经验真丰富,我也要向他学习,提高自己的技能。
有19位网友表示赞同!
灬一抹丶苍白
1小时抵一个月,这让我对学习有了新的认识,原来效率这么重要。
有7位网友表示赞同!
不识爱人心
看了这个,我对自己又有了信心,只要努力,一定可以像年薪百万的架构师一样优秀。
有13位网友表示赞同!
蹂躏少女
年薪百万的架构师还这么努力,我们这些基层员工更应该珍惜时间,努力学习。
有12位网友表示赞同!
念初
3小时能抵一个月,这说明知识是可以通过高效学习获得的,我要试试看。
有7位网友表示赞同!