mysql表空间与oracle表空间区别 及mysql表oracle表区别

十年热恋 提交于 2020-01-13 00:17:49

看到 存储引擎发现系统表空间这一章。感到很困惑。它不像oracle表空间那样是共享的。所以就来分析一下,mysql的表空间有什么不同。不同点:mysql:mysql的表空间分为两个文件一个是*.ibd文件存储数据索引...等数据信息。且只针对一张表。还有一个文件是*.frm这个文件是存储表的元数据。oralce:oralce的表空间是共享的。可以存储多个表,也可以存储多个模式下的对象。不仅存储数据信息,而且还存储元数据。以上分析只针对innodb存储引擎。其他引擎根据实际情况来定

 

一、并发性
并发性是Oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。
Mysql:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
Oracle:
Oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以Oracle对并发性的支持要好很多。
二、一致性
Oracle:
Oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。Oracle通过在undo表空间中构造多版本数据块来实现读一致性,
每个session查询时,如果对应的数据块发生变化,Oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
Mysql:
Mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。
session更新数据时,要加上排它锁,其他session无法访问数据。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!