事务的隔离级别
从低到高:
1、Read_UnCommitted---->事务未提交时,别人也能看到你修改过的数据,但是不能和你在同一时间修改数据,属于隔离级别最低的,可以通过排它锁实现
2、Read_Committed---->读数据的事务开启后允许别的事务读取本行数据,但写事务开启以后提交之前任何事物不能访问本行,大多数据库的隔离级别都是这一级
3、Repeat_Read ---->读取事务可以允许继续读事务单不允许写事务,写事务一旦开启以后,禁止任何其他事务,MySQL是这一级别(为了解决主从不一致显现,保证主从复制不出问题)
4、Serializable(可串行化)----->最高级别,要求事务序列化执行,事务只能一个一个的执行,不允许并发执行
关于脏读、不可重复读、幻读
脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。
顺便一提事务的四大特性(ACID)
原子性 (Atomicity):保证事务所有完整的逻辑性,要么食=事务内所有操作都成功,要么全部回滚
一致性 (Consistency):事务的执行结果必须从一个一致性状态变成另一个一致性状态
隔离性 (Isolation):一个事物的执行不能被别的并发事物所干扰
持久性 (Durability):事物一旦提交,其对数据库的改变应该是永久的。
innodb和Mysalm
innodb和Mysalm分别是什么
就是一个引擎类型
区别
1、 myisam不支持事务,innodb支持,innodb有外键,myisam支持全文索引,查询效率更高。myisam只有表锁,innodb支持行锁。
2、存储结构:Myisam存储在磁盘上,分三个文件存储,第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
innodb只在一个文件中存储,它的大小通常受限于操作系统的大小,一般大概在2G左右
3、索引不一样
myisam的b树结构的叶子节点存储的是数据的物理位置,最终通过数据的物理位置去找到真实数据。
innodbB+树叶子节点下面直接存储有数据,而次索引下,存储的是主键的id。通过主键查找数据的时候,就会很快查找到数据,但是通过次索引查找数据的时候,需要先查找到对应的主键id,然后才能查找到对应的数据。
4、关于聚簇索引和非聚簇索引
innodb聚蔟索引相当于汉语字典正文,索引就是拼音,从a到z按顺序排列,数据就是字也按照从a到z的顺序排列。索引顺序与数据顺序排列一致。
mysalm非聚蔟索引相当于偏旁部首,最终偏旁部首索引项b数结构存放的是目录,也就是数据的物理地址,而且偏旁部首索引顺序与数据的索引顺序不一致,没有关系。