1.并发并发是oltp数据库最重要的特性,但是并发涉及到资源的获取、共享和锁定。mysqlmysql主要使用表级锁,资源锁的粒度非常大。如果一个会话锁定一张表的时间过长,其他会话将无法更新这张表中的数据。InnoDB引擎的表虽然可以使用行级锁,但是这种行级锁的机制依赖于表的索引。如果表没有索引,或者SQL语句没有使用索引,那么仍然使用表级锁。Oracleoracle使用的是行级锁,资源锁定的粒度要小很多。它只锁定SQL需要的资源,锁定在数据库中的数据行上,与索引无关。所以oracle对并发的支持要好很多。2.ConsistencyoracleOracle支持serializable隔离级别,可以达到最高级别的读一致性。每个会话提交后,其他会话可以看到提交的更改。Oracle通过在undo表空间中构造多版本数据块来实现读一致性。每次session查询时,如果对应的数据块发生变化,Oracle会在查询时在undo表空间中构造本次session的旧数据。片。mysqlmysql没有类似oracle的构造多版本数据块的机制,只支持readcommitted隔离级别。当一个会话读取数据时,其他会话不能更改数据,但可以在表的末尾插入数据。当会话更新数据时,加上排他锁,其他会话无法访问数据。3、事务oracle很早就全面支持事务。MySQL只支持InnoDB存储引擎行级锁情况下的事务。4、数据持久化oracle保证提交的数据可以恢复,因为oracle将提交的sql操作行写入online在线日志文件,并保存在磁盘上。如果数据库或主机异常重启,oracle重启后可以在线测试客户提交的数据在线日志恢复。MySQL默认提交sql语句,但是如果更新过程中db出现问题或者host重启,可能会导致数据丢失。5、提交方式Oracle默认不自动提交,需要用户手动提交。MySQL默认为自动提交。六、逻辑备份oracle逻辑备份不锁数据,备份数据一致。mysql逻辑备份时必须对数据加锁,保证备份数据一致,影响业务中dml的正常使用。七、热备份oracle有成熟的热备份工具rman,热备份,不影响用户使用数据库。即使备份的数据库不一致,也可以通过归档日志和联机重做日志进行一致恢复。对于mysqlmyisam引擎,在使用mysql自带的mysqlhostcopy热备时,需要对表加读锁,会影响dml操作。Innodb引擎,它会备份innodb表和索引,但不会备份.frm文件。使用ibbackup备份时,会有一个日志文件记录备份过程中数据的变化,所以不需要锁表,也不会影响其他用户使用数据库。但是这个工具是付费的。innobackup是与ibbackup结合使用的脚本,它将协助备份.frm文件。八、sql语句的扩展性和灵活性mysql对sql语句有很多非常实用方便的扩展,比如limit功能,insert可以一次插入多行数据,select一些管理数据不用addfrom。甲骨文在这方面感觉比较稳定和传统。9.ReplicationOracle既有push或pull传统的数据复制,也有dataguard的双机或多机容灾机制。如果主库出现问题,可以自动将备库切换为主库,但是配置管理比较复杂。mysql复制服务器配置简单,但是当主库出现问题时,集群库可能会丢失某些数据。并且需要手动将集群库切换为主库。十、性能诊断oracle有各种成熟的性能诊断和调优工具,可以实现很多自动分析和诊断功能。比如awr、addm、sqltrace、tkproof等mysql诊断调优方法很少,主要是慢查询日志。11、权限与安全Mysql用户跟宿主机有关,感觉没什么意义。另外,也更容易伪造host和ip可以乘虚而入。Oracle的权限和安全概念比较传统,中规中矩。12、分区表和分区索引Oracle的分区表和分区索引功能非常成熟,可以提高用户访问db的体验。mysql的分区表还不成熟稳定。十三、管理工具oracle拥有多种成熟的命令行、图形界面、web管理工具,以及众多的第三方管理工具,管理极为方便高效。mysql管理工具很少,linux下安装管理工具有时需要安装额外的包(phpmyadmin等),有些复杂。服务器端提供oracle服务实例,是数据库的核心,用于数据库管理、对象管理和存储、数据存储、查询、数据库资源监控、监控等服务。客户端只是一个与服务器进行交互的工具,比如sqlplus,在sqlplus中执行SQL语句并传输给服务器,服务器解析后在SQL中执行操作,并将操作结果输出给客户端。这样就完成了客户端与服务器交互的过程。
