网站首页 > 技术文章 正文
鉴于和数据库打交道日益频繁,遂决定写一篇关于Oracle、SqlServer、MySQL区别的个人观点。
MySQL是大学时的主要学习对象,但刚参加工作时转到了SqlServer,现在主要接触的是Oracle,由于其他数据库(例如DB2等)我并没用过,就不提及了。
事先说明:不一定对,欢迎指正,不吹不黑,不要骂我。
- 所属公司:
- 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优点:体积小、速度快、总体拥有成本低,开放源码,搭配“L(Linux)A(Apache)M(MySQL)P(PHP/Perl/Python)“或“LN(Nginx)MP”就可以建立起一个稳定、免费的网站系统,适合中小型网站。
Oracle优点:使用方便、功能强大,可靠性好、安全性好、可移植性好、适应高吞吐量,适用于各类大、中、小、微机环境。
SqlServer优点:图形化用户界面,丰富的编程接口工具,与Windows NT完全集成,支持分布式的分区视图,适用于Win的Web技术的开发。
所以理性来讲,
这三个数据库各有所长。
用哪个数据库,完全取决你需要什么功能和服务。
当然啦,
也取决你有没有钱买你想要的服务
猜你喜欢
- 2024-11-11 Oracle Database 23ai 中的默认大文件表空间
- 2024-11-11 SQL优化相关对象——表 sql优化例子
你 发表评论:
欢迎- 615℃几个Oracle空值处理函数 oracle处理null值的函数
- 608℃Oracle分析函数之Lag和Lead()使用
- 595℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 592℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 587℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 580℃【数据统计分析】详解Oracle分组函数之CUBE
- 569℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)