数据库面试题

1、SQL优化的常见方法

2、SQL索引的顺序、字段的顺序

3、查看SQL索引

4、Mysql分页查询语句

5、Mysql的事物特性和隔离级别

  • 事务特性(ACID)
    • 原子性(Atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
    • 一致性(Consistency):数据库总是从一个一致性的状态转移到另一个一致性的状态
    • 隔离性(Isolation):一个事务所做的修改在最终提交前,对其他事务是不可见的。
    • 持久性(Durability):一旦事务提交,其所做的修改就会永久的保存在数据库中
  • 隔离级别:
    • 读未提交(read-uncommited):一个事务读取另一个事务未提交的数据,可能会出现脏读
    • 读已提交(read-commited):一个事务要等到另一个事务提交后才能读取数据,可能会出现不可重复读
    • 可重复读(repeatable-read):开始读取数据的事务开始后,不在允许修改动作,可能会出现幻读
    • 序列化读(Serializble):串行化顺序执行
      大多数数据库默认的隔离级别是read commited如sql server、oracle,Mysql的默认级别是repeatable-read。

6、sql having的使用场景

7、Mysql数据库的索引及原理

8、锁机制介绍:行锁、表锁、排它锁、共享锁

9、乐观锁的业务场景和实现方式

10、事务介绍、分布式事务的理解,常见的解决方案有哪些? 什么是两阶段提交、三阶段提交

11、Mysql记录binglog的方式主要包括三种模式,每种模式的优缺点是什么

12、JDBC如何实现事务、嵌套事务实现、分布式事务实现

13、SQL的整个解析过程、执行过程原理、SQL行转列

14、Redis为什么这么快,Redis采用多线程会有那些问题

15、Redis支持那些数据结构

String 字符串、List 列表、Set 集合、Hash 哈希、Zset有序集合

16、Redsi跳表的问题

17、Redsi单进程单线程如何能够高并发

18、如何使用Redis实现分布式锁

19、Redis分布式锁操作的原子性,Redsi内部是如何实现的

20、为什么用自增列作为主键

  1. 21、MySQL的索引都有哪些

MySQL的索引分为单列索引(普通索引、唯一索引、主键索引)和组合索引。

(1) 普通索引

最基本的索引,没有任何限制

(2) 唯一索引

它与普通索引类似,不同的是索引列的值必须是唯一的,但允许有空值;如果是组合索引,则列值的组合必须唯一。

(3) 主键索引

它是一种特殊的唯一索引,不允许有空值,一般是在建表的时候创建主键索引

(4) 组合索引

多个列组成一个索引,专门用于组合搜索