文章目录
- 大方向
- 详细点
大方向
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等。