Oracle和mysql
mysql以表级锁为主,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
oracle以行级锁为主,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引;所以oracle对并发性的支持要好很多。
oracle很早就完全支持事务
mysql在innodb存储引擎的行级锁的情况下才支持事务
MySQL:一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。
Oracle:每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块
提交方式:
oracle:默认不提交,需要手动提交
mysql:默认提交