MySQL面试题

1. Mysql的存储引擎有哪些其主要区别

        有innodb和myisam

        innodb支持行锁和事务以及表锁

        myisam只支持表锁不支持行锁和事务

        innodb是聚簇索引myisam是非聚簇索引

2.聚簇索引和非聚簇索引的区别

        聚簇索引他索引和数据都在一个文件,非聚簇索引的索引和数据不在一个文件中

        聚簇索引的叶子节点存储的是行数据,非聚簇索引的叶子节点存储的是行数据的索引

3.mysql中的索引有哪些

        有B+树索引和Hash索引

        b+树索引支持顺序索引和随机索引他的叶子节点存储的是索引和数据,并且叶子节点相互连接的。

        hash索引是基于hash表来实现的,他会对索引列通过哈希算法得到hash值

4.hash索引和B+树索引的区别

        1.hash索引一般是精准查找,b+树除了精准查找还有能有范围查找

        2.hash索引可能发生hash冲突,不够稳定

        3.hash索引不支持排序的

        4.hash索引不支持范围查找

5.hash索引的种类有哪些

        1.主键索引:他是不允许重复的,并且不能为null

        2.唯一索引:不允许重复的和可以为null值

        3.普通索引:可以有重复的值也可以有null值

        4.组合索引:多个列组成 的索引

6.主键索引和普通索引的区别

        主键索引的数据列的数据是唯一且不能为空,普通索引列数据允许不唯一并且可以为空

        主键索引是聚簇索引不需要回表,普通索引是非聚簇索引需要回表

        在每个表中只能有一个主键索引可以有多个普通索引

7.b树和b+树的区别

        b树的叶子节点和非叶子节点都是有数据列的b+树只有叶子节点有数据列

        b树只能支持随机检索,b+树支持顺序检索和随机检索

        b树他的叶子都是相互独立的,b+树的 叶子节点相互连接的

8.MySQL索引为啥使用b+树索引不使用B树索引

        因为b树索引只支持随机检索,B+树索引支持随机检索和顺序检索

        B+树的空间利用率也是比较高的检索效率更快

9.避免索引失效的方式有哪些

        1. 避免使用select *

        2. 使用in也可能使索引失效

        3.使用or也可能导致索引失效

        4.索引列使用算术运算

        5.索引列使用函数

        6.order by也会导致索引失效

        7.类型不匹配也会导致索引失效

        8.不满足最左前缀也会使索引失效

        9.在使用like %在前

10.数据库中的锁有哪些及其区别

        按照锁的区间划分 分为:间隙锁和临键锁

        区别:

               间隙锁:他是间一个范围的数据进行锁定锁住的区间是双开的区间

                临键锁:他是由行锁+间隙锁组成的他锁定的是当前行的前一行数据和后一个行数据

                是一个左开右闭的区间

        按照锁的粒度划分 分为:行锁和表锁

        按照锁级别划分 分为:共享锁(读锁)和排他锁(写锁)

        按照锁的使用方式分为:乐观锁和悲观锁

11.事务的四大特性

        ACID

        原子性:原子性就是要么全部成功要么全部失败

        一致性:事务提交前后要保持一致

        隔离性:每个事务都是相互独立的

        持久性:每个事务提交后将永久保存

12.数据库中并发一致性问题

        脏读:就是说可以读取未提交的数据

        不可重复读:两次读取的数据不一致

         幻读:在两次读取过程中发现在第二次读取时比第一次读取多出一些数据

13.事务的隔离机制

                读已提交:只能读取已提交的数据解决了脏读问题

                读未提交:可以读取未提交的数据可能会发生脏读

                可重复读:一个事务在多次读取的结果保持一致

                串行化:需要加锁实现,强制事务是以串行的方式执行

14.隔离机制如何实现的

        读已提交和可重复读通过MVCC来实现的串行化可以通过锁来实现的

15.MVCC是啥

       MVCC就是多版本并发控制机制,通过undoLog版本链和Read View来实现的用UndoLog来保存历史快照,Read View可见性规则来判断当前版本的数据是否可见

16.快照读和当前读的区别

        快照读:就是读取数据可见的版本有可能读取到旧的版本比如说一些select 就是快照读

        当前读:读取最新 的数据,比如说显示加锁就是当前读

17.SQL的执行顺序是

        from >on>join>where>group by >having>select> >order by >limit

18..left join (左外连接)和右外连接(right join)和join(内连接)的区别

        left join:是以左表为准也就是查询左表的 全部数据和右表符合条件的数据,最多能查询A*B条数据最少a条数据

        right join:是以右表为准也就是查询右表的全部数据和左表符合条件的数据

        join:就是查询左右表中符合条件的数据

19.undo log和redo log和bin log区别

        undo log主要保证事务的原子性,用来回滚事务

        redo log主要保证事务持久性

        binlog:也就是二进制文件,记录者insert,update,delete等sql语句用于数据增量备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值