加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL DBA口试常见题目总结--索引,事宜,存储引擎,优化等

发布时间:2019-08-16 12:14:10 所属栏目:编程 来源:波波说运维
导读:这篇文章首要是针对开拓职员的,以是不涉及到MySQL的处事陈设等操纵,首要包罗索引,事宜,存储引擎,优化等方面。 一、索引 关于MySQL的索引,之前现实上也先容了许多次,这里首要先容一些常用的口试题。 1. 什么是索引?索引是个什么样的数据布局呢? 索引是一

char是一个定长字段,若是申请了char(10)的空间,那么无论现实存储几多内容.该字段都占用10个字符,而varchar是变长的,也就是说申请的只是最大长度,占用的空间为现实字符长度+1,最后一个字符存储行使了多长的空间.

在检索服从上来讲,char > varchar,因此在行使中,假如确定某个字段的值的长度,可以行使char,不然应该只管行使varchar.譬喻存储用户MD5加密后的暗码,则应该行使char.

2. varchar(10)和int(10)代表什么寄义?

varchar的10代表了申请的空间长度,也是可以存储的数据的最大长度,而int的10只是代表了展示的长度,不敷10位以0添补.也就是说,int(1)和int(10)所能存储的数字巨细以及占用的空间都是沟通的,只是在展示时凭证长度展示.

3. MySQL的binlog有有几种录入名目?别离有什么区别?

有三种名目,statement,row和mixed.

  • statement模式下,记录单位为语句.即每一个sql造成的影响会记录.因为sql的执行是有上下文的,因此在生涯的时辰必要生涯相干的信息,同时尚有一些行使了函数之类的语句无法被记录复制.
  • row级别下,记录单位为每一行的窜改,根基是可以所有记下来可是因为许多操纵,会导致大量行的窜改(好比alter table),因此这种模式的文件生涯的信息太多,日记量太大.
  • mixed. 一种折中的方案,平凡操纵行使statement记录,当无法行使statement的时辰行使row.

另外,新版的MySQL中对row级别也做了一些优化,当表布局产生变革的时辰,会记录语句而不是逐行记录.

4. 有相识横向分表和纵向分表吗?

横向分表是按行分表.假设我们有一张用户表,主键是自增ID且同时是用户的ID.数据量较大,有1亿多条,那么此时放在一张内外的查询结果就不太抱负.我们可以按照主键ID举办分表,无论噬洗尾号分,可能按ID的区间分都是可以的. 假设凭证尾号0-99分为100个表,那么每张表中的数据就仅有100w.这时的查询服从无疑是可以满意要求的.

纵向分表是按列分表.假设我们此刻有一张文章表.包括字段id-择要-内容.而体系中的展示情势是革新出一个列表,列表中仅包括问题和择要,当用户点击某篇文章进入详情时才必要正文内容.此时,假如数据量大,将内容这个很大且不常常行使的列放在一路会拖慢原表的查询速率.我们可以将上面的表分为两张.id-择要,id-内容.当用户点击详情,那主键再来取一次内容即可.而增进的存储量只是很小的主键字段.价钱很小.

虽然,分表着实和营业的关联度很高,在分表之前必然要做好调研以及benchmark.不要凭证本身的意料盲目操纵.

5. 三个范式

  • 第一范式:每个列都不行以再拆分.
  • 第二范式:非主键列完全依靠于主键,而不能是依靠于主键的一部门.
  • 第三范式:非主键列只依靠于主键,不依靠于其他非主键.

在计划数据库布局的时辰,要只管遵守三范式,假如不遵守,必需有足够的来由.好比机能. 究竟上我们常常会为了机能而妥协数据库的计划。

【编辑保举】

  1. 分享一份适用的MySQL数据库巡检剧本,值得保藏
  2. 怎样通过机能调优打破MySQL数据库机能瓶颈?
  3. 到底选择PostgreSOL照旧MySQL?看这里
  4. MySQL:常用的30种SQL查询语句优化要领
  5. 记一次出产情形卡顿优化进程:大事宜并发回滚
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读