文章目录

  • 大方向
  • 详细点


大方向

1、Oracle是大型数据库,收费的,支持大并发、大访问量,是OLTP的最好的工具,安装占用内存偏多,使用中所占内存也偏高。
2、MySQL是中小型数据库,开源的,不支持大并发、大访问量,安装占用内存相对偏少,使用中所占内存也相对偏低。

注:

OLTP(On-Line Transaction Processing联机事务处理过程)

详细点

1、事务支持
MySQL默认不支持事务,只有在某些存储引擎如:innodb可以支持。

Oracle对于事务是完全支持的。

2、事务提交
MySQL默认自动提交。

Oracle默认不自动提交,需手动提交,需要些commit命令。

3、并发
并发性涉及资源的获取、共享和锁定。

MySQL以表锁为主,丢资源锁定的力度很大,如果一个session对表加锁时间过长,会让其他session无法更新此表的数据。

Oracle使用行级锁,对资源的锁定力度要小,只是锁定SQL需要的资源,并且加锁是在数据库中的数据行上,不依赖索引。

故Oracle对并发性支持好些。

4、事务隔离级别
MySQL默认的隔离级别是repeatable read(可重复读:会产生幻读)。

Oracle默认的隔离级别是read commit(读取提交的:会产生不可重复读和幻读)。

同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的。

5、数据的持久性
MySQL默认提交SQL语句,但是如果更新过程中出现db或主机重启的问题,也可能会丢失数据。

Oracle保证提交的事务均可以恢复,因为Oracle把提交的SQL操作先写入了在线联机日志文件中,保存到磁盘上,如果出现数据库或主机异常重启,重启Oracle可以靠联机在线日志恢复客户提交的数据。

6、数据复制
MySQL复制服务器配置简单,但主库出现问题时,从库有可能丢失一定的数据,且需要手工切换从库到主库。

Oracle既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题时,可以自动切换备库到主库,但配置管理较复杂。

7、逻辑备份
MySQL逻辑备份是要锁定数据,才能保证备份的数据是一致的,影响业务正常的DML(数据操纵语言Data Manipulation Language)使用。

Oracle逻辑备份时不锁定数据,且备份的数据是一致的。

8、分区分表
MySQL分区分表不成熟不稳定。

Oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。

9、sql语句的灵活性
MySQL对SQL语句有很多非常使用而方便的扩展,如:limit(分页)、insert可以一次插入多条数据,

Oracle的分页时通过伪例和子查询完成的,插入数据只能一行行的插入。

10、性能诊断
MySQL的性能调优方法比较少,主要有慢查询日志。

Oracle有各种成熟的的性能诊断调优工具,能实现很多自动分析、诊断功能。如:awr、addm、sqltrace、tkproof等。