几率大的数据库(MySQL)面试题(含答案)

其他面试题类型汇总:
Java校招极大几率出的面试题(含答案)----汇总
几率大的网络安全面试题(含答案)
几率大的多线程面试题(含答案)
几率大的源码底层原理,杂食面试题(含答案)
几率大的Redis面试题(含答案)
几率大的linux命令面试题(含答案)
几率大的杂乱+操作系统面试题(含答案)
几率大的SSM框架面试题(含答案)
几率大的数据库(MySQL)面试题(含答案)
几率大的JVM面试题(含答案)
几率大的现场手撕算法面试题(含答案)
临时抱佛脚必备系列(含答案)
注:知识还在积累中,不能保证每个回答都满足各种等级的高手们,若发现有问题的话,本人会尽快完善。
。◕‿◕。


本文的面试题如下:
MyisAM和innodb的有关索引的疑问
innodb为什么要用自增id作为主键
MySql索引是如何实现的
说说分库与分表设计(面试过)
聚集索引与非聚集索引的区别
事务四大特性(ACID)原子性、一致性、隔离性、持久性?
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
MySQL常见的存储引擎InnoDB、MyISAM的区别?【~】
数据库三范式,根据某个场景设计数据表?优缺点
MySQL 索引使用的注意事项
SQL怎么优化
数据库悲观锁和乐观锁的原理和应用场景?
如何做 MySQL 的性能优化?
索引是什么?MySQL为什么使用B+树,而不是使用其他?B+树的特点
创建索引时需要注意什么?
CHAR和VARCHAR的区别?
NOW()和CURRENT_DATE()有什么区别?
各种索引的概念:索引,主键,唯一索引,联合索引,索引分类
建立索引的使用场景
Myql中的事务回滚机制,持久性,隔离级别的实现
说一说drop、delete与truncate的区别
什么叫视图?游标是什么?
什么是存储过程?用什么来调用?
内连接、自连接、外连接(左、右、全)、交叉连接的区别
手写SQL


MyisAM和innodb的有关索引的疑问

两者都是什么索引?聚集还是非聚集https://www.cnblogs.com/olinux/p/5217186.html
MyISAM( 非聚集)
使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。
MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。
InnoDB( 聚集索引)
第一个重大区别是InnoDB的数据文件本身就是索引文件, 这棵树的叶节点data域保存了完整的数据记录。
但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。

因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有)
1)如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键
2)如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。(隐含字段)
简单说:
如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择其作为聚集索引;如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引;
在这里插入图片描述
在这里插入图片描述
innodb不需要myi文件
在这里插入图片描述

innodb为什么要用自增id作为主键:

如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页
如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置, 频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构,后续不得不通过OPTIMIZE TABLE(optimize table)来重建表并优化填充页面。

说说分库与分表设计(面试过)分片

分库与分表的目的在于,减小数据库的单库单表负担,提高查询性能,缩短查询时间。
通过分表,可以减少数据库的单表负担,将压力分散到不同的表上,同时因为不同的表上的数据量少了,起到提高查询性能,缩短查询时间的作用,此外,可以很大的缓解表锁的问题。
分表策略可以归纳为垂直拆分和水平拆分。
水平分表:取模分表就属于随机分表,而时间维度分表则属于连续分表。
如何设计好垂直拆分,我的建议:将不常用的字段单独拆分到另外一张扩展表. 将大文本的字段单独拆分到另外一张扩展表, 将不经常修改的字段放在同一张表中,将经常改变的字段放在另一张表中。<

  • 55
    点赞
  • 428
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值