一、保存数据的持久性:
MySQL:是在数据库更新或者重启,则会丢失数据。
Oracle:把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复。
SqlServer:2014之后,也拥有了完全持久和延迟持久特性。
二、提交方式:
MySQL:默认是自动提交(变量autocommit为ON)。
Oracle:默认不自动提交,需要用户手动提交(commit)。
SqlServer:默认是自动提交,用户可手动停止(KILL)。
三、对事务的支持:
MySQL:在innodb存储引擎的行级锁的情况下才可支持事务。
Oracle:完全支持事务。
SqlServer:在非自动提交时才可支持事务。
四、对并发性的支持:
MySQL:以表级锁(行级锁依赖于表索引)为主,如果一个session的加锁时间过长,会让其他session无法更新此表中的数据,即“悲观并发控制”。
Oracle:使用行级锁,对资源锁定的粒度要小很多,并且不依赖索引,对并发性的支持要好很多,即“乐观并发控制”。
SqlServer:在表、表的分页、索引键以及单独的数据行上支配共享锁、排它锁、以及更新锁,简单地说:读取时用共享锁,修改时用排它锁,更新锁则是共享锁和排他锁的一种混合。
五、复制备份:
MySQL:复制服务器配置简单,但主库出问题时,从库有丢失一定数据的可能。
Oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,还有成熟的热备工具rman,主库出现问题时,可以自动切换备库到主库,但配置管理较复杂。
SqlServer:仅复制备份是独立于常规SQL Server备份序列的SQL Server备份。通常进行备份会更改数据库并影响其后备份的还原方式。仅用于在不影响数据库总体备份和还原过程的情况下,为特殊目的而进行的备份。
六、逻辑备份:
MySQL:逻辑备份时要锁定数据,才能保证备份的数据是一致的,会影响正常业务。
Oracle:逻辑备份时不锁定数据,且备份的数据是一致。