时间:2021-07-01 10:21:17 帮助过:17人阅读
忽略其他问题,直接上技术面试
Java GC 一共分为四种,分别是
选择回答,并说明原因。
MySQL有如下中引擎:MyISAM、InnoDB(5.5后的默认引擎)、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
InnoDB是支持事务的引擎
事务中发生修改,在该事物提交之前,其他事务已经能读取的更改。脏读(Dirty Read).
事务开始时,只能读取到其他事务已经提交的结果。
在同一个事务中,多次去读到的结果是一样的。
但是避免不了幻读。幻读:当某个事务读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录。当之前的事务再次读取该范围时,会产生幻行(Phantom Row)。
Mysql
与其他数据库不同,在这个隔离级别上是避免了幻读的。
强制事务串行化,彻底避免上面提到的 脏读、不可重复读、幻读问题。
A: 原子性(atomicity)
C: 一致性(consistency)
I: 隔离行(isolation)
D: 持久性(durability)
A:InnoDB采用的是group commit的方式来保证原子性。
C:一致性是undo日志实现的。undo日志除了回滚作用之外, undo 实现MVCC,读取一行记录时,发现事务锁定,通过undo恢复到之前的版本,实现非锁定读取。
I:隔离行其实是通过lock实现,InnoDB有行锁、表锁
D:持久性在于日志
1、redo log(事务日志)保证事务的原子性和持久性(物理日志)
2、undo log保证事务的一致性,InnoDB的MVCC也是用undo log来实现的(逻辑日志).
3、redo log中带有有checkPoint,用来高效的恢复数据.
4、物理日志记录的是修改页的的详情,逻辑日志记录的是操作语句. 物理日志恢复的速度快于逻辑日志.
感谢:http://blog.csdn.net/tangkund3218/article/details/47904021
Mysql事务 JAVAGC 面试
标签:red csdn 回收 row tab 公司 多次 table 服务器