1. 什么是事务?
- 可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行
2. 事务的四个特性
事务必须满足四个条件(ACID):
- 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,最小的执行单位
- 一致性(Consistency):事务执行前后,都处于一致性状态
- 隔离性(Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
- 持久性(Durability):事务执行完成后,对数据的修改就是永久的,即便系统故障也不会丢失
3. 事务隔离级别
- READ_UNCOMMITTED:这是事务的最低隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。解决第一类丢失更新的问题,但是会出现脏读、不可重复读、第二类丢失更新的问题、幻读
- READ_COMMITTED:保证一个事务修改的数据提交后才能被另外一个事务读取,即另外一个事务不能读取该事务未提交的数据。解决第一类丢失更新和脏读的问题,但是会出现不可重复读、第二类丢失更新的问题、幻读问题
- REPEATABLE_READ:保证一个事务相同条件下前后两次获取到的数据是一致的(注意是一个事务,可以理解为事务间的数据互不影响)解决第一类丢失更新,脏读、不可重复读、第二类丢失更新的问题,但会出现幻读
- SERIALIZABLE:事务串行执行,解决了脏读、不可重复读、幻读,但效率很差,所以实际中一般不用
4. InnoDB默认事务隔离级别?如何查看当前隔离级别?
- InnoDB默认为可重复读(REPEATABLE_READ)
- 查看
5. 什么是锁?
- 数据库的锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性,这样才能保证在高并发的情况下,访问数据库的时候,数据不会出现问题
6. 死锁
- 是指两个或两个以上进程执行过程中,因竞争共享资源造成的相互等待现象
7. 如何处理死锁?
- 设置超时时间,超时后自动释放
- 发起死锁检测,主动回滚其中一条事务,让其他事务继续执行
8. 如何创建用户?授权?
- 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- 授权
GRANT privileges ON databasename.tablename TO 'username'@'host';
···
- username:用户名
- host:可以登陆的主机地址。本地用户用localhost表示,任意远程主机用通配符%
- password:登录密码,密码可以为空表示不需要密码登录服务器
- databasename:数据库名称
- tablename:表名称,*表示所有表
···
9. 查看表结构
- desc table_name;
10. MySQL删除表的几种方式?区别?
-delete:仅删除表数据,支持条件过滤,支持回滚。记录日志。因此比较慢
delete from table_name;
- truncate:仅删除所有数据,不支持条件过滤。不支持回滚。不记录日志,效率过于delete
truncate table table_name;
- drop:删除表数据同时删除表结构。将表所占的空间都释放掉。删除效率最高
drop table table_name;
上一篇:Java面试手册V2.0+突击V3.0知识点整理(二十五) 附封面图片😍
下一篇:Java面试手册V2.0+突击V3.0知识点整理(二十七) 附封面图片😍
如果觉得封面图片还行,请顺手点个赞😍