数据库

数据库的隔离级别:

1.未提交读:读到其它事务未提交的数据

2.已提交读:读到其他事务已经提交的数据

3.可重复读:同一事务内的查询都是与事务开始时刻一致的

3.可串行化:每次读都获取表即共享锁,读写锁互斥

Oracle默认的是已提交读:

innodb相关部分:

innodb默认的是可重复读,但是为了降低频繁加锁给数据库性能带来的消耗,innodb采用多版本并发控制(MVCC)来提高数据库的性能

innode在每行数据的末尾隐藏式地添加了两个记录:一个记录这行数据何时被创建,一个记录这行数据何时被删除,虽然需要增加额外的存储空间,

但是可以减少锁的使用。一个事务SELECT的时候只会查询出创建版本号小或等于当前版本号,删除版本号大或等于当前版本号的数据。

innodb与myisam的区别与共同点:

共同点:

innodb和myisam都是基于B+树来索引的。

区别:

1.innodb支持事务,myisam不支持事务。

2.innodb既有表锁,又有行锁,但是如果innodb在执行SQL语句时where条件不是没有建立索引的话,innodb也会锁全表,myisam只有表级锁

innodb的并发性能要强与myisam

3.innodb支持外键,myisam不支持

4.innodb支持外键,myisam不支持外键

5.myisam用一个变量保存了表的行数,而innodb没有保存,所以在执行select coun(*) from table的时候myisam很快,而innodb则需要扫描全表

6.myisam的查询比innodb的查询效率更高,innodb要支持MVVC多版本并发控制,要检查和维护

应用场景:

mysiam适合查询比较频繁的情况

innodb适合支持事务,环境复杂的应用场景

 

posted @ 2018-03-13 20:09  大熊好好写代码  阅读(277)  评论(0编辑  收藏  举报