题目
MYSQL、Oracle、Sql Service 的区别
-
所属公司:
- MYSQL 是由瑞典 MYSQL AB 公司开发,目前属于 Oracle 旗下产品;
- Oracle 是由美国 ORACLE 公司(甲骨文)开发的一组核心软件产品;
- SqlServer 是由 Microsoft、Sybase 和 Ashton-Tate 三家公司共同开发的,目前主属 Microsoft;
-
sql 语句的灵活性:
- MYSQL 对 sql 语句更灵活,比如:limit 功能,insert 可以一次插入多行数据,select 某些管理数据可以不加 from;
- oracle 对 sql 语句的感觉更加稳重传统一些;
- SqlServer 对 sql 语句那绝了,两个成语概括:脚踏实地,步步为营;
-
保存数据的持久性:
- MYSQL 是在数据库更新或者重启,则会丢失数据;
- Oracle 把提交的 sql 操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复;
- SqlServer 从 2014 之后,也拥有了完全持久和延迟持久特性;
-
提交方式:
- MYSQL 默认是自动提交(变量 autocommit 为 ON);
- oracle 默认不自动提交,需要用户手动提交(commit);
- SqlServer 默认是自动提交,用户可手动停止(KILL);
-
对事务的支持:
- MYSQL 在 innodb 存储引擎的行级锁的情况下才可支持事务;
- Oracle 则完全支持事务;
- SqlServer 在非自动提交时才可支持事务;
-
对并发性的支持:
- MYSQL 以表级锁(行级锁依赖于表索引)为主,如果一个 session 的加锁时间过长,会让其他 session 无法更新此表中的数据,即“悲观并发控制”;
- Oracle 使用行级锁,对资源锁定的粒度要小很多,并且不依赖索引,对并发性的支持要好很多,即“乐观并发控制”;
- SqlServer 在表、表的分页、索引键以及单独的数据行上支配共享锁、排它锁、以及更新锁,简单地说:读取时用共享锁,修改时用排它锁,更新锁则是共享锁和排他锁的一种混合;
-
逻辑备份:
- MYSQL 逻辑备份时要锁定数据,才能保证备份的数据是一致的,会影响正常业务;
- Oracle 逻辑备份时不锁定数据,且备份的数据是一致;
- SqlServer 逻辑备份时要锁定数据,才能保证备份的数据是一致的,会影响正常业务;
-
复制备份:
- MYSQL 复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据;
- Oracle 既有推或拉式的传统数据复制,也有 dataguard 的双机或多机容灾机制,还有成熟的热备工具 rman,主库出现问题时,可以自动切换备库到主库,但配置管理较复杂;
- SqlServer 的仅复制备份是独立于常规 SQL Server 备份序列的 SQL Server 备份。通常,进行备份会更改数据库并影响其后备份的还原方式。只用于:在不影响数据库总体备份和还原过程的情况下,为特殊目的而进行的备份。
-
性能诊断:
- MYSQL 的诊断调优方法较少,主要有慢查询日志;
- Oracle 有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如 awr、addm、sqltrace、tkproof 等;
- SqlServer 性能检测工具有 sql server profiler,性能调优工具有数据库引擎优化顾问,简单好用还炫酷;
-
权限与安全:
- MYSQL 的用户与主机有关,更容易被仿冒主机及 ip,有可乘之机,没什么意义;
- Oracle 的用户和 root 用户权限彼此分离,权限与安全概念比较传统,中规中矩;
- SqlServer 本机可用 windows 验证登录,远程则用 SqlServer 验证登录(即 sa 登录);
-
相关服务:
- MYSQL 是轻量型数据库,并且免费开源,没有服务恢复数据;
- Oracle 是重量型数据库,收费,Oracle 公司对 Oracle 数据库有任何服务;
- SqlServer 是重量型数据库,收费(与 Java 有合作),也有支持供应商;
-
总结:
- MYSQL 优点:体积小、速度快、总体拥有成本低,开放源码,适合中小型网站。
- Oracle 优点:使用方便、功能强大,可靠性好、安全性好、可移植性好、适应高吞吐量,适用于各类大、中、小、微机环境。
- SqlServer 优点:图形化用户界面,丰富的编程接口工具,与 Windows NT 完全集成,支持分布式的分区视图,适用于 Win 的 Web 技术的开发。