A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2020-2-26 20:34  /  2510 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今日整理:
1.什么是事务,什么是提交,什么是回滚?
答:
……什么是事务:
事务开启之后, 所有的操作都会临时保存到事务日志中, 事务日志只有在得到 commit 命令才会同步到数据表
中,其他任何情况都会清空事务日志(rollback,断开连接)

在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。
通俗的讲,事务将SQL语句组合成一个单元,而这个单元在处理数据的时候不可分割,一荣俱荣。

……什么是提交:
手动提交事务:
1) 执行成功的情况: 开启事务>执行多条 SQL 语句>成功提交事务
2) 执行失败的情况: 开启事务>执行多条 SQL 语句>事务的回滚

自动提交事务:
MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕自动提交事务, MySQL 默认开始自动提交事务

……什么是回滚?
事务操作失败:rollback(回滚事务)
执行失败的情况: 开启事务>执行多条 SQL 语句>事务的回滚
即数据恢复到事务开始的阶段


2.mysql有几个隔离级别?
答:
- 读 未提交: read uncommitted ,不能解决任何读问题
- 读 提交:    read committed ,只能解决脏读问题
- 重复读 :    repeatable read  ,能解决脏读,以及不可重复读问题
- 序列化:     serializable ,能解决所有读问题
  各级级别按上面的总结从低到高排列的,隔离级别越高,解决的读问题就越多。
  但是:隔离级别越过,数据库的执行效率越差。


3.数据库并发访问问题都有哪些?
答;
- 脏读问题(dirty reads)
  一个事务读取到了另一个事务未提交的数据
- 不可重复读(non-repeatable reads)
  一个事务读取到了一个事务提交的数据,导致一次事务中,两次读取的数据不一致
- 幻读(phantom reads)
  一个事务读取到了另一个事务已经插入的数据,导致一次事务中,两次读取的数据不一致
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马