一、宏观上:
1、Oracle是大型的数据库而Mysql是中小型数据库;Mysql是开源的,Oracle是收费的,且价格昂贵。
2、Oracle支持大并发,大访问量,是OLTP的最好的工具。
3、安装占用的内存也是有差别,Mysql安装完成之后占用的内存远远小于Oracle所占用的内存,并且Oracle越用所占内存也会变多。
二、微观上:
1、对于事务的支持
Mysql对于事务默认是不支持的,只是有某些存储引擎中如:innodb可以支持;而Oracle对于事物是完全支持的。
2、事务提交方式
oracle默认不自动提交,需要用户手动提交。Mysql默认是自动提交。
3、自动增长的数据类型处理
Mysql是一个自动增长的数据类型,插入数据的时候,不需要管理,它自己会自动增长,Oracle不支持自动增长的数据类型,通过建立一个自动增长的序列号来完成自动增长。
4、事务隔离级别
mysql是read commited的隔离级别,而oracle是repeatable read的隔离级别;同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的读一致性。每个session提交后其它session才能看到提交的更改
oracle:
oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块
mysql:
mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据
5、保存数据的持久性
MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复
6、单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号
7、逻辑备份
MySQL逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,Oracle逻辑备份时不锁定数据,且备份的数据是一致