鉴于和数据库打交道日益频繁,遂决定写一篇关于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技术的开发。
 
所以理性来讲,
这三个数据库各有所长。
用哪个数据库,完全取决你需要什么功能和服务。
当然啦,
也取决你有没有钱买你想要的服务。 (:ι」∠)

MySQL、Oracle、SqlServer的区别的更多相关文章

  1. SQL Server,MySQL,Oracle三者的区别

    SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...

  2. MySQL与SQLServer的区别(一千条语句)

    ER图.分页.差异.Java连接MySQL SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 ...

  3. mysql,oracle,sqlserver使用jdbc连接数据库总结

    jdbc连接数据是javaweb开发的一个重点,今天特此来总结一下,加深记忆. jdbc连接数据库一共分为三步: 1:加载驱动 需要去下载各自的驱动jar包,可以去网上搜索一下. 模板:加载驱动程序: ...

  4. springboot+mybatis集成多数据源MySQL/Oracle/SqlServer

    日常开发中可能时常会遇到一些这样的需求,业务数据库和第三方数据库,两个或多个数据库属于不同数据库厂商,这时候就需要通过配置来实现对数据库实现多源处理.大致说一下我的业务场景,框架本身是配置的sprin ...

  5. MySql与SqlServer的区别

    1.SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运 ...

  6. SQL SERVER 创建远程数据库链接 mysql oracle sqlserver

    遇到的坑 在连接Oracle时,因为服务器为10g 32位版本,然后在本地安装了32为10g客户端,然后一直报错[7302.7303],后来下载了12c 64位版本,安装成功后,问题解决 原因:mss ...

  7. mysql oracle sqlserver三种数据库count函数返回值不一样

    SQLQuery countSqlQuery = userDAO.createSQLQuery("select count(id) from fhcb_08_tbl_user"); ...

  8. JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)

    * 感谢DT课堂颜群老师的视频讲解(讲的十分仔细,文末有视频链接) import java.sql.Connection; import java.sql.DriverManager; import ...

  9. siteServer创建网站中Mysql和SqlServer的区别

    mysql中使用本地数据库时使用:localhost sqlserver使用本地数据库时使用:(local)

  10. MySQL和SqlServer的区别

    一.查看表结构数量等mysql语句: -- 查看系统内所有数据库 show databases: -- 查询数据库内所有表 show tables; -- 显示表结构 desc 表名; sql ser ...

随机推荐

  1. jQuery三级联动效果代码(省、市、区)

    很长时间都不用jquery了,有人问我jquery写三级联动的插件我就写好了发出来吧,正好需要的人都可以看看. 一.html代码 <!DOCTYPE html> <html> ...

  2. SpringBootSecurity学习(17)前后端分离版之 OAuth2.0 数据库(JDBC)存储客户端

    自动批准授权码 前面我们授权的流程中,第一步获取授权码的时候,都会经历一个授权是否同意页面: 这个流程就像第三方登录成功后,提问是否允许获取昵称和头像信息的页面一样,这个过程其实是可以自动同意的,需要 ...

  3. Zeppelin 学习笔记之 Zeppelin安装和elasticsearch整合

    Zeppelin安装: Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化.背后可以接入不同的数据处理引擎,包括spark, hive, taj ...

  4. linux分析工具之lsof详解

    一.概述 在linux中,所有东西都是以文件的形式存在的,所以我们在linux上的操作都是通过对文件的操作来执行我们所需要的逻辑,比如我们对文件数据的访问,修改,访问网络的连接等,刚好lsof(lis ...

  5. Spring Boot 2.X(六):Spring Boot 集成Redis

    Redis 简介 什么是 Redis Redis 是目前使用的非常广泛的免费开源内存数据库,是一个高性能的 key-value 数据库. Redis 与其他 key-value 缓存(如 Memcac ...

  6. 一致性hash (PHP)

    <?php /** * Flexihash - A simple consistent hashing implementation for PHP. * * The MIT License * ...

  7. 31、vue-cli3引入封装svg图标

    svg图标放大不失真,png会出现失真现象. 一.方法一 1.在对应vue项目里添加插件 vue add svg-sprite 输入 Y 2.在执行 npm install svgo svgo-loa ...

  8. JavaScript:如何获取某一天所在的星期

    我们会遇到的需求的是,获取今天或者某一天所在星期的开始和结束日期. 我们这里来获取今天所在星期的始末日期,我们可以通过(new Date).getDay()来获取今天是星期几,然后再通过这个减去或者加 ...

  9. 云计算之走进LINUX(二)

    引言 * 第二部分  云计算应用管理 [Shell脚本基础] [使用变量] [条件测试及选择] [列表式循环] [系统安全保护] [配置用户环境] [防火墙策略管理] [ISCSI共享存储] [数据库 ...

  10. JavaScript ES6函数式编程(一):闭包与高阶函数

    函数式编程的历史 函数的第一原则是要小,第二原则则是要更小 -- ROBERT C. MARTIN 解释一下上面那句话,就是我们常说的一个函数只做一件事,比如:将字符串首字母和尾字母都改成大写,我们此 ...