mysql常见面试题

一、简述MySQL索引及其作用?

    是数据库管理系统中一个排序的数据结构,根据不同的存储引擎索引分为Hash索引、B+树索引等。常见的InnoDB存储引擎的默认索引实现为:B+树索引。索引可以协助快速查询、更新数据库表中数据。

二、什么是事务?

    事务是一系列的操作,需要要符合ACID特性,即:事务中的操作要么全部成功,要么全部失败。

三、如何保证数据的完整性?(事务的特点)

特点:

Atomicity 原子性
Consistency 一致性
Isolation 隔离性
Durability 耐久性

1、原子性

原子性:所有语句作为一个单元全部成功执行或全部取消。不能出现中间状态。

    初中知识:原子是物质的构成单元之一,具备化学不可分割性
    在一个事务工作单元中,所有标准事务语句(DML),要么全成功,要么全回滚。

2、一致性

一致性:如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态。

    事务发生前、中、后都应该保证数据始终一致状态
    MySQL的各项功能的设置,都是最终要保证一致性。

   例如:
        一个转账事务,里面有两条sql语句,一条是张三减少100元,另一个是李四加100元
        转账前:
            张三:500元
            李四:500元
            总额:1000元

        事务执行完成后,即转账后
            张三:400元
            李四:600元
            两个人总钱数:1000元

        ps:前后数据类型也要保持一致

3、隔离性

隔离性:事务之间不相互影响。
    mysql支持多事务并发工作的系统。
    a工作的时候不能收到其他事物的影响

4、持久性

持久性:事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。

当事务提交(commit命令执行成功后,此次事务操作的所有数据“落盘”),都要永久保存下去。不会因为数据实例发生故障。

四、事务的隔离机制

1、未提交读(Read Uncommitted)

    允许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。也就是可能读取到其他会话中未提交事务修改的数据。

有可能出现的问题:
    脏页读,不可重复读,幻读

2、提交读(Read Committed)

    只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)。

有可能出现的问题:
    不可重复读,幻读

3、可重复读(Repeated Read)

    可重复读。无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响。

有可能出现的问题:
    幻读,但是可以通过其他手段防止幻读出现。

4、串行读(Serializable)

    完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
    串行化事务。以上问题都能规避,但是不利于事务的并发。

五、简述不同隔离基础出现的问题

1、脏读

1)读到别人在内存中未提交的数据。(只begin未commit,但是其他用户看到了)
2)内存缓存原因,直接读脏页数据

2、不可重复读

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术