共计 1772 个字符,预计需要花费 5 分钟才能阅读完成。
一、并发性
并发性是数据库最重要的个性,但并发波及到资源的获取、共享与锁定。
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 管理工具,还有很多第三方的管理工具,治理极其不便高效。