在开始数据库学习之前,本人也在Oracle和MySQL之间犹豫。 
Oracle 跟 MySQL 目前大概二八开,即占 80% 市场份额的 20% 大型互联网公司用的是 Oracle,提供精确数据云服务端;占20% 市场份额 的80% 中小型互联网公司依赖于 MySQL,物美价廉还开源。 
SQL Server 和 Oracle 以及 MySQL ,三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性。排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了。

1、从发展历史来说

(1)Oracle

成立于1977年,早期的理论基础,来自于一篇IBM的论文《A Relational Model of Data for Large Shared Data Banks》。作者选取了关系代数的五种运算,并基于运算,架构了一种新型的数据存储模型。基于这种模型,Oracle成为了一个非常典型的关系数据库。因此也变的严谨、安全、高速、稳定,并且变的越来越庞大。 
由于其诞生早、结构严谨、高可用、高性能等特点,使其在传统数据库应用中大杀四方,金融、通信、能源、运输、零售、制造等各个行业的大型公司基本都是用了Oracle,早些年的时候,世界500强几乎100%都是Oracle的用户。

(2)MySQL

最初的核心思想,主要是开源、简便易用。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台。但依然问题多多,如不支持事务操作、子查询 、外键、存储过程和视图等功能。 
MySQL的爆发实际是在01、02年,尤其是02年发布的4.0 Beta版,正式选定InnoDB作为默认引擎,对事务处理能力及数据缓存能力有了极大的提高。同年4.1版开始支持子查询,至此MySQL终于蜕变成一个成熟的关系型数据库系统。05年的5.0版本又添加了存储过程、服务端游标、触发器、查询优化以及分布式事务功能,但同年被Oracle抄了后路,InnoDB被Oracle收编。08年,MySQL被Sun收购,09年,Oracle收购了Sun和MySQL。 
由于MySQL的早期定位,其主要应用场景就是互联网开发。基本上,互联网的爆发成就了MySQL,LAMP架构风靡天下。而由于MySQL更多的的追求轻量、易用,以及早期的事物操作及复杂查询优化的缺失,在传统的数据库应用场景中,份额极少。

(3)SQL Server

一提到SQL Server,大家一般都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase and Ashton-Tate三家公司拦下的生意,是为IBM(又出现了)公司的OS/2操作系统开发的。随着OS/2项目的失败,大家也分道扬镳。 Microsoft自然转向自己的win操作系统,作为windows NT软件方案的一部分。而Sybase则专注于Linux/Unix方向的数据库开发。 
MS SQL Server主要面向中小企业。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具,在快速构建商业智能(BI)方面颇有建树。 MS SQL Server是MS公司在软件集成方案中的重要一环,也为WIN系统在企业级应用中的普及做出了很大贡献。

2、典型应用场景

(1)Oracle

Oracle的应用,主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。而且由于Oracle对复杂计算、统计分析的强大支持,在互联网数据分析、数据挖掘方面的应用也越来越多。

(2)MySQL

MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于MySQL的开源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务。

(3)MS SQL Server

windows生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱 MS SQL Server 。例如,自建ERP系统、商业智能、垂直领域零售商、餐饮、事业单位等等。

3、架构

其实要说执行的区别,主要还是架构的区别。正是架构导致了相同SQL在执行过程中的解释、优化、效率的差异。这里只做粗略说明,就不细说了

(1)Oracle

数据文件包括:控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件。这是根据文件功能行进行划分,并且所有文件都是二进制编码后的文件,对数据库算法效率有极大的提高。由于Oracle文件管理的统一性,就可以对SQL执行过程中的解析和优化,指定统一的标准:RBO(基于规则的优化器)、CBO(基于成本的优化器) 
通过优化器的选择,以及无敌的HINT规则,给与了SQL优化极大的自由,对CPU、内存、IO资源进行方方面面的优化。

(2)MySQL

最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT。

(3)SQL Server

数据架构基本是纵向划分,分为:Protocol Layer(协议层), Relational Engine(关系引擎), Storage Engine(存储引擎), SQLOS。SQL执行过程就是逐层解析的过程,其中Relational Engine中的优化器,是基于成本的(CBO),其工作过程跟Oracle是非常相似的。在成本之上也是支持很丰富的HINT,包括:连接提示、查询提示、表提示。

4、后话

Oracle、DB2、SQL Server、Access都是商业数据库,前三者主要用于大型系统,最后用于小型数据库,后两者是MS产品,不像前两者具备跨平台性。 
作为开元数据库,MySQL和PostgreSQL应用广泛。

MySQL 入门(一)—— 常用数据库介绍相关推荐

  1. (1)Mysql架构和常用引擎介绍

    Mysql设计原理栏目总结 (1)Mysql架构和常用引擎介绍 (2)Mysql索引原理和优化总结 1.MySQL逻辑架构图 (1)Server层:包括图中XX,以及所有内置函数和所有跨存储引擎功能, ...

  2. MySQL(1)数据库介绍,配置MySQL的tab补全

    文章目录 一.数据库的基本概念 1.1 使用数据库的必要性 1.2 数据库的概念 1.2.1 数据(Data) 1.2.2 表 1.2.3 数据库 1.2.4 数据库管理系统(DBMS) 1.2.5 ...

  3. Linux下常用数据库介绍

    一.数据库介绍 1.什么是数据库:        数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组 织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据 ...

  4. 3/5 MySQL入门总结:数据库(DATABASE)操作

    数据库操作 说明 操作 查看数据库列表 mysql> SHOW DATABASES; 创建数据库 mysql> CREATE DATABASE [IF NOT EXISTS] db_nam ...

  5. Pandas入门之常用函数介绍

    一.Pandas简介 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. pan ...

  6. MySQL入门篇(含数据库的备份)

    1.DB,DBMS,SQL 1.DB(数据库):存储数据和管理数据的仓库,保存一系列有组织的数据 2.DBMS(数据库管理系统):数据库是通过DBMS创建和操作的容器 3.SQL(结构查询语言):专门 ...

  7. mysql入门优化_MySQL数据库:MySQL十大优化技巧详解

    本文主要向大家介绍了MySQL数据库的MySQL十大优化技巧详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是 ...

  8. Hadoop入门及常用组件介绍

    文章目录 大数据体系架构 hadoop介绍 Hadoop生态系统主要组件 HDFS (分布式文件系统) MapReduce(分布式计算框架) Spark(基于内存的分布式计算框架) Storm(实时的 ...

  9. 国内外常用数据库介绍

    一.中国 1.中国知网(CNKI) http://www.cnki.net/ 中国知识基础设施工程(China National Knowledge Infrastructure,CNKI)是由清华同 ...

  10. MYSQL个人学习笔记——数据库介绍、mysql安装配置、数据库操作指令、备份恢复、mysql函数、例题分享

    数据库 一.数据库概述 数据库(DataBase,简称DB):长期存储数据的仓库 数据库分类:层次式数据库.网络式数据库.关系型数据库 数据库特点: 1.实现数据共享,减少数据冗余 2.采用特定的数据 ...

最新文章

  1. 【Python实战】Django建站笔记
  2. mixin network_基于Mixin Network的Ruby比特币开发教程
  3. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
  4. RabbitMQ管控台操作手册
  5. java map用二叉树_【课堂笔记分享】linkedlist、二叉树、hashmap
  6. 元素凸起效果_被誉为作物“生殖元素”的“硼”到底有多重要?看完你就明白了...
  7. 快速上手Tomcat(eclipse中配置tomcat)
  8. java并发初探ReentrantWriteReadLock
  9. Add_List2Dictionay
  10. python没有main函数的概念吗_为什么Python没有main函数?
  11. windows 无法停止ics_x64仿真功能加入 ARM版Windows即将获得大量的应用程序
  12. oppo r11s鸿蒙固件,OPPO R11s刷机包
  13. webpower携手穷游,解析大数据、营销智能化与用户的关系
  14. PDF单位尺寸与像素转换
  15. arch模型 python_【一点资讯】Python玩转金融时间序列之ARCH与GARCH模型 www.yidianzixun.com...
  16. iOS6.1完美越狱教程 一键越狱5分钟搞定
  17. 【PyQt5】教你一招,用timer计时器做个打地鼠的小游戏
  18. 云管边端架构图_新通信行业:阿里云构建云管边端物联网布局
  19. How Broswer Work
  20. EOS私链发币简要说明

热门文章

  1. html框架 book,HTML框架的基本结构的.doc
  2. 弹性盒怎么实现左边图片右边文字_【粉丝问题】如何用ps修改照片中的文字数字?...
  3. python爬虫线上编辑_Python 爬虫入门《中》
  4. 每个叶子节点(nil)是黑色。_129. 求根到叶子节点数字之和
  5. win 7更改计算机用户名和密码错误,win7系统一开机就显示用户名和密码错误故障的解决方法...
  6. c++ 应输入表达式_【C语言编程入门系列】—— 第五章,C语言基本运算和表达式(一)...
  7. Codeforces 208E. Blood Cousins
  8. 踏实学习前端,学技术,必有高薪,好的人生,学习量大能力要求高就对了
  9. c++ windows下读取大文件(内存映射)
  10. tushare数据分析(1)