文章目录
本系列文章:
MySQL(一)SQL语法、数据类型、常用函数、事务
MySQL(二)MySQL SQL练习题
MySQL(三)视图、存储过程、索引
MySQL(四)存储引擎、锁
MySQL(五)MySQL架构、数据库优化、主从复制
MySQL(六)SQL语句优化
MySQL(七)MySQL和Oracle、PostgreSQL的区别
一、MySQL和Oracle
1.1 基本差别*
- 数据库类型
Oracle数据库是一个对象关系数据库管理系统(ORDBMS),MySQL是一个开源的关系数据库管理系统(RDBMS)。
对象关系数据库管理系统:基于对象模型,存储数据及其方法,数据存储在对象中。拥有对象类、对象标识、多态、封装和继承等特性。用于存储复杂的数据。
关系数据库管理系统:基于关系模型, 只存储数据,数据存储在实体里面,以包含特定信息的表格的形式存在。用于处理比较简单的数据。
- 客户规模
Oracle主要面向大企业级别的用户,而MySQL则更适合中小型企业和个人。 - 成本
Oracle付费,MySQL免费。 - 可移植性和兼容性
MySQL可以很容易地在各种平台上运行,并与其他许多开源软件集成。Oracle虽然也有跨平台支持,但更偏向于使用自己的技术堆栈和产品集成。 - 安全性
Oracle使用了许多安全功能,如用户名,密码,配置文件,本地身份验证,外部身份验证,高级安全增强功能等。MySQL只使用三个参数来验证用户,即用户名,密码和位置。 - 内存
Oracle占有内存空间大(因为面对对象,并且还存储数据的方法);MySQL占有内存空间比较小。 - 性能和扩展性
由于MySQL的精简设计和管理方式,所以其性能通常比Oracle更高,尤其在读取和写入方面。MySQL的扩展性也相对较好,因为其社区活跃,有许多插件和工具可供选择和使用。 - 支持并发量
Oracle使用行级别的锁,不依赖索引来锁定某一行,锁资源的粒度小,所以并发性高,支持大并发访问量;
MySQL只有InnoDb支持行锁,而且必须依赖索引才能用到行锁,否则会使用表锁,所以并发性较低,面对大访问量可以做分表分库优化。 - 数据量
Oracle单表数据量,可以千万,甚至上亿的规模;Mysql单表数据量,最好控制在百万级别。 - 事务隔离级别
Oracle默认的是 read commited(读已提交)的隔离级别,会有不可重复读+幻读的问题。
MySQL默认是 repeatable read(可重复度)的隔离级别,只会有幻读的问题。 - 临时表
在MySQL中,临时表是仅对当前用户会话可见的数据库对象,并且一旦会话结束,这些表将自动删除。
Oracle中临时表的定义与MySQL略有不同,因为临时表一旦创建就会存在,直到它们被显式删除,并且对具有适当权限的所有会话都可见。但是,临时表中的数据仅对将数据插入表中的用户会话可见,并且数据可能在事务或用户会话期间持续存在。 - sql语句的灵活性
M