脏读:表示一个事物能够读取另一个中还未提交的数据。比如某个事物实行插入纪录 A ,此时该事物还未提交,然后另一个事务实行读取了纪录A。 不可重复读:是指在一个事物内,多次读取同一数据。 幻读:指同一个事务内多次查询返回的效果集不一样。比如同一个事务A第一次查询时候有n条纪录,但是第二次划一条件下查询却有n+1条纪录,这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务效果集内里的数据,同一个纪录的数据内容被修改了,全部数据行的纪录就变多或者变少了。
说一下MySQL常用的引擎?
InnoDB:InnoDB引擎提供了对数据库acid事务的支持,并且还提供了行级锁和外键的约束,它的设计的目的就是处理大数据容量的数据库体系。MySQL运行的时候,InnoDB会在内存中创建缓冲池,用于缓冲数据和索引。但是该引擎是不支持全文搜刮,同时启动也比较的慢,它是不会保持表的行数的,所以当进行 select count(*) from table 指令的时候,需要进行扫描全表。由于锁的粒度小,写操纵是不会锁定全表的,全部在并发度较高的场景下利用会提拔效率的。 MyIASM:MySQL的默认引擎,但不提供事务的支持,也不支持行级锁和外键,因此当实行插入和更新语句时,即实行写操纵的时候需要锁定这个表,所以会导致效率会降低。不外和InnoDB差别的时,MyIASM引擎时保存了表的行数,于是当进行select count(*) table 语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,假如表的读操纵远远多于写操纵时,并且不需要事务的支持的,可以将MyIASM作为数据库引擎的首选。