Java常见面试题之SQL高级

目录

SQL高级考核1.什么是事务(必问)

2.事务特性有哪些?(必问)

3.事务并发可能会出现什么问题?

4.事务隔离级别有哪些?

6.什么是 WAL 机制 ?

7.MySOL常见日志有哪些?

8.什么是索引?(必问)

9.索引分类有哪些?

9.索引底层结构是什么?(必问)

11.MySOL中什么是存储引擎

12.MySOL常用存储引擎有哪些?

13.什么是主从同步?主从复制,读写分离

14.主从同步原理

15,什么是读写分离


SQL高级考核
1.什么是事务(必问)

事务(Transaction)是一个工作单元,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令**要么都执行**,要么**都不执行**;

2.事务特性有哪些?(必问)

1. **原子性**:事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。
2. **一致性**:事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。
3. **隔离性**:对数据进行修改的所有并发事务是彼此隔离的, 这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
4. **持久性**:事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。

3.事务并发可能会出现什么问题?

​	**脏读:**数据不一致、事务 A 更新了数据,但还没有提交,这时事务 B 读取到事务 A 更新后的数据,然后事务 A 回滚了,事务 B 读取到的数据就成为脏数据了。

​	**不可重复读:**事务 A 对数据进行多次读取,事务 B 在事务 A 多次读取的过程中执行了更新操作并提交了,导致事务 A 多次读取到的数据并不一致。
​	**幻读:**事务 A 在读取数据后,事务 B 向事务 A 读取的数据中插入了几条数据,事务 A 再次读取数据时发现多了几条数据,和之前读取的数据不一致。
​	**丢失修改:**事务 A 和事务 B 都对同一个数据进行修改,事务 A 先修改,事务 B 随后修改,事务 B 的修改覆盖了事务 A 的修改。

4.事务隔离级别有哪些?

1. **读未提交** (READ UNCOMMITTED):所有事务都可以看到其它未提交事务的执行结果,该隔离级别一般不会使用。
2. **读已提交** (READ COMMITTED):一个事务只能看到已经提交的事务所做的变更。
3. **可重复读** (REPEATABLE READ):确保同一事务的多个实例在并发读取数据时会看到相同的数据行。
4. **串行化** (SERIALIZABLE):完全串行化读,每次读都需要获得表级共享锁,读写相互阻塞。

6.什么是 WAL 机制 ?

在 MySQL 中,为了提高数据库的性能,MySQL 采用了 WAL(Write-Ahead Logging)机制,即客户端在修改数据的过程后,并不会立马对硬盘中的数据进行更新。

7.MySOL常见日志有哪些?

1. 错误日志(errorlog)
2. 一般查询日志(general log)
3. 二进制日志(binlog)
4. 中继日志(relay log)
5. 重做日志(redo log)
6. 回滚日志(undo log)

8.什么是索引?(必问)

	数据库只做两件事情:存储数据、检索数据。而索引是在你存储的数据之外,额外保存一些路标(一般是 B+树),以减少检索数据的时间。所以索引是主数据衍生的附加结构。
​	索引是对数据表的一列活多列的值进行排序的一种结构,使用索引可以快速访问数据表中的特定信息。

9.索引分类有哪些?

1. 普通索引:最基本的索引,它没有任何的限制。
2. 唯一索引:索引列的值必须唯一,允许有空值。
3. 主键索引:它是一种特殊的唯一索引,不允许有空值。
4. 复合索引:又叫做多列索引,联合索引。多个字段上建立的索引,提高复合条件查询的速度
5. 全文索引:对文本的内容进行分词,进行搜索。

9.索引底层结构是什么?(必问)

	索引的数据结构主要有 B+树和哈希表,对应的索引分别为 B+树索引和哈希索引。InnoDB 引擎的索引类型有 B+树索引和哈希索引,默认的索引类型为 B+树索引。
​	B+树的优势:
-单一节点存储更多元素,减少 IO

- 所有查询都要找到叶子节点,查询稳定
- 所有叶子节点形成有序链表,方便范围查询
- 一般性情况,数据库的 B+树的高度一般在 2~4 层,这就是说找到某一键值的行记录最多需要 2 到 4 次逻辑 IO,相当于 0.02 到 0.04s。

11.MySOL中什么是存储引擎

​	数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

12.MySOL常用存储引擎有哪些?

1. **InnoDB** 事务型数据库的首选引擎,支持**事务**安全表(ACID),支持**行锁定和外键**。
2. **MyISAM** 存储引擎,并发性比较差,不支持事物和外键等操作,默认的锁粒度为**表级锁**。
3. MySQL5.5 之前的默认存储引擎是 MyISAM,5.5 之后就改为了 InnoDB。

13.什么是主从同步?主从复制,读写分离

​	使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。
**	一句话表示就是,主数据库做什么,从数据库就跟着做什么。**

14.主从同步原理

 

​	整体上来说,复制有 3 个步骤:

1. master 将改变记录到二进制日志 (binary log) 中。
2. slave 的 io 线程将 master 的 binary log events 拷贝到它的中继日志 (relay log)。
3. slave 的 sql 线程解析中继日志中的事件并在从库执行,保持与主库一致。

15,什么是读写分离

​	读写分离就是只在**主数据库服务器上写**,只在**从数据库服务器上读**。基本的原理是让主数据库服务器处理事务性查询,而从数据库服务器处理 select 查询。数据库复制被用来把主数据库服务器上数据变更同步到集群中的从数据库服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值