一、并发性
并发性是数据库最重要的个性,但并发波及到资源的获取、共享与锁定。
mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁工夫过长,会让其余session无奈更新此表中的数据。尽管InnoDB引擎的表能够用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有应用索引,那么依然应用表级锁。
oracle:oracle应用行级锁,对资源锁定的粒度要小很多,只是锁定sql须要的资源,并且加锁是在数据库中的数据行上,不依赖于索引。所以oracle对并发性的反对要好很多。
二、一致性
mysql:mysql没有相似oracle的结构多版本数据块的机制,只反对read commited的隔离级别。一个session读取数据时,其余session不能更改数据,但能够在表最初插入数据。session更新数据时,要加上排它锁,其余session无法访问数据。
oracle:oracle反对serializable的隔离级别,能够实现最高级别的读一致性。每个session提交后其余session能力看到提交的更改。oracle通过在undo表空间中结构多版本数据块来实现读一致性,每个session查问时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session结构它查问时的旧的数据块。
三、事务
mysql在innodb存储引擎的行级锁的状况下才反对事务。
oracle很早就齐全反对事务。
四、数据持久性
mysql:默认提交sql语句,但如果更新过程中呈现db或主机重启的问题,兴许会失落数据。
oracle:保障提交的数据均可复原,因为oracle把提交的sql操作线写入了在线联机日志文件中,放弃到了磁盘上,如果呈现数据库或主机异样重启,重启后oracle能够靠联机在线日志,复原客户提交的数据。
五、提交形式
mysql默认是主动提交。
oracle默认不主动提交,须要用户手动提交。
六、逻辑备份
mysql逻辑备份时要锁定数据,能力保障备份的数据是统一的,影响业务失常的dml应用。
oracle逻辑备份时不锁定数据,且备份的数据是统一的。
七、热备份
mysql:myisam的引擎,用mysql自带的mysqlhostcopy热备时,须要给表加读锁,影响dml操作。innodb的引擎,它会备份innodb的表和索引,然而不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变动,因而能够不必锁表,不影响其余用户应用数据库。但此工具是免费的。innobackup是联合ibbackup应用的一个脚本,他会帮助对.frm文件的备份。
oracle有成熟的热备工具rman,热备时,不影响用户应用数据库。即便备份的数据库不统一,也能够在复原时通过归档日志和联机重做日志进行统一的回复。
八、sql语句的扩大和灵活性
mysql对sql语句有很多十分实用而不便的扩大,比方limit性能,insert能够一次插入多行数据,select某些治理数据能够不加from。
oracle在这方面感觉更加稳重传统一些。
九、复制
mysql:复制服务器配置简略,但主库出问题时,丛库有可能失落肯定的数据。且须要手工切换丛库到主库。
oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库呈现问题时,能够主动切换备库到主库,但配置管理较简单。
十、性能诊断
mysql的诊断调优办法较少,次要有慢查问日志。
oracle有各种成熟的性能诊断调优工具,能实现很多主动剖析、诊断性能。比方awr、addm、sqltrace、tkproof等
十一、权限与平安
mysql的用户与主机无关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
oracle的权限与平安概念比拟传统,中规中矩。
十二、分区表和分区索引
mysql的分区表还不太成熟稳固。
oracle的分区表和分区索引性能很成熟,能够进步用户拜访db的体验。
十三、管理工具
mysql管理工具较少,在linux下的管理工具的装置,有时要装置额定的包(phpmyadmin,etc),有肯定复杂性。
oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,治理极其不便高效。
发表回复