当前位置: 首页 > 后端技术 > Java

Mysql和Oracle的13个不同

时间:2023-04-02 01:12:57 Java

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