Oracle和MySQL的对比
一、概述
1.1 Oracle
1.1.1 优点
- 开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持;
- 可伸缩性,并行性:Oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度;
- 安全性:获得最高认证级别的ISO标准认证。
- 性能:Oracle 性能高 保持开放平台下TPC-D和TPC-C世界记录;
- 客户端支持及应用模式:Oracle 多层次网络计算支持多种工业标准用ODBC、JDBC、OCI等网络客户连接 ;
- 使用风险:Oracle 长时间开发经验完全向下兼容得广泛应用地风险低 。
- 对硬件的要求很高;
- 价格比较昂贵;
- 管理维护麻烦一些;
- 操作比较复杂,需要技术含量较高。
- 体积小、速度快、总体拥有成本低,开源;
- 支持多种操作系统;
- 是开源数据库,提供的接口支持多种语言连接操作
- MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源;
- MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证;
- 支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改。
- 拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性;
- MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。
- 不支持热备份;
- MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变;
- 没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制;
1.1.2 缺点
1.2 MySql
1.2.1 优点:
1.2.2 缺点:
二、Mysql应用场景
2.1 Web网站系统
Web站点,是MySQL最大的客户群,也是MySQL发展史上最为重要的支撑力量。
MySQL数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,而且性能出色。
2.2 日志记录系统
MySQL数据库的插入和查询性能都非常的高效,,对需要大量的插入和查询日志记录的系统来说,MySQL是非常不错的选择。比如处理用户的登录日志,操作日志等,都是非常适合的应用场景。
2.3 数据仓库系统
随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。
有几个主要的解决思路:
1、一是采用昂贵的高性能主机以提高计算性能,用高端存储设备提高I/O性能,效果理想,但是成本非常高;
2、二是通过将数据复制到多台使用大容量硬盘的廉价pcserver上,以提高整体计算性能和I/O能力,效果尚可,存储空间有一定限制,成本低廉;
3、通过将数据水平拆分,使用多台廉价的pcserver和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有pcserver一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决I/O性能问题,成本也很低廉。
在上面的3个方案中,第2和第3个的实现,MySQL都有较大的优势。通过MySQL的简单复制功能,可以很好的将数据从一台主机复制到另外一台,不仅仅在局域网内可以复制,在广域网同样可以。
2.4 嵌入式系统
嵌入式环境对软件系统最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件系统,必须是轻量级低消耗的软件。
MySQL在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。它对于嵌入式环境来说,是一种非常合适的数据库系统,而且MySQL有专门针对于嵌入式环境的版本。
2.5 对比其他数据
- mysql:常规关系型数据库;
- redis:注重高性能,适用于即时性要求高的业务,比如说秒杀、库存;
- mongodb:注重大数量,适用于插入大量低价值业务数据的场景,比如说日志系统。
三、Oracle VS MySQL
3.1 数据安全
对于Oracle和MySQL数据库用户来说,MySQL使用一系统的授权表来管理和跟踪用户权限。当对用户进行验证、授权、访问控制时,MySQL使用这些授权表。
3.1.1 数据库验证
与Oracle及其他多数数据库通过用户名和密码进行验证的机制不同,MySQL使用附加的location参数对用户时行验证。这个location参数经查是主机名称、IP地址或者为一个通配字符串。通过这个附加的参数,MySQL可以限制用户访问域中的某些主机。更进一步可以做到通过不同的主机登陆时有不同的密码和用户权限。也就是说用户名相同,但登陆主机的名称不同时,可能是不同的用户。
3.1.2 权限
MySQL的权限系统是通过继承形成的分层结构。权限授于高层时,其他低层隐式继承被授于的权限,当然低层也可改写这些权限。
按授权范围不同,MySQL有以下种授权方式:
1、全局;
2、基于每个主机;
3、基于表;
4、基于表列。
每一级在数据库中都有一个授权表。当进行权限检查时,MySQL从高到低检查每一张表,低范围授权优先于高范围授权。
与Oracle不同,MySQL没有角色的概念。也就是说,如果对一组用户授于同样的权限,需要对每一个用户分别授权。
3.2 模式迁移
模式包含表、视图、索引、用户、约束、存储过程、触发器和其他数据库相关的概念。多数关系型数据库都有相似的概念。
本节包含以下内容:
1、模式对象的相似性;
2、模式对象的名称;
3、表设计时的关注点;
4、多数据库整合;
5、MySQL模式整合的关注点。
3.2.1 模式对象的相似性
就模式对象,Oracle和MySQL存储诸多的相似,但也有一些不同。
表3-1 模式对象
Oracle |
MySQL |
AFTER trigger |
trigger |
BEFORE trigger |
trigger |
Check constraint |
Check constraint |
Column default |
Column default |
Database |
Database |
Foreign key |
Foreign key |
Index |
Index |
Package |
N/A |
PL/SQL function |
Routine |
PL/SQL procedure |
Routine |
Primary key |
Primary key |
Role |
N/A |
Schema |
Schema |
Sequence |
AUTO_INCREMENT for a column |
Snapshot |
N/A |
Synonym |
N/A |
Table |
Table |
Tablespace |
N/A |
Temporary table |
Temporary table |
Trigger for each row |
Trigger for each row |
Unique key |
Unique key |
User |
User |
View |
View |
3.2.2 模式对象的名称
Oracle是大小写不敏感的,并且模式对象是以在写时行存储。在Oracle的世界中,列、索引、存储过程、触发器以及列别名都是大小写不敏感,并且在所有的平台都是如此。MySQL是大小写敏感的,如数据库相对的存储路径、表对应的文件都是如此。
当把关键字用引号引起来时,Oracle和MySQL都允许把这些关键字用于模式对象。但MySQL对于一些关键字,不加引号也行。
3.2.3 表设计的关注点
本节主要讨论当把MySQL转为Oracle时需要注意的地方。主要包含以下两点:
1、字符数据的类型;
2、列默认值。
3.2.3.1 字符数据类型
MySQL和Oracle在字符型数据保存和读取上存在一些不同。MySQL的字符类型,如CHAR和VARCHAR的长度小于65535字节。Oracle支持4种字体类型:CHAR、NCHAR、NVARCHAR2和VARCHAR2。CHAR和NCHAR的最大长度为2000字节,NVARCHAR2和VARCHAR2最大长度为4000字节。
MySQL的CHAR在按一定长度存储时,是用空格填充的右对齐方式,在读取时去掉空格。
3.2.3.2 列默认值
MySQL会处理列默认值,不允许他为空,这点和Oracle不同。在Oracle中如果向表插入数据,需要对有所有不允许为NULL列的值。
3.2.4 多数据库迁移
如果多个MySQL数据库位于同一个数据库服务上,支持迁移。
3.2.5 数据存储概念
MySQL的数据库对应于服务器上数据目录内的了目录,这一数据存储方式与多数据数据库不同,也包括Oracle。数据库中的表对应一个或者多个数据库目录下的文件,并取表存储时的存储引擎。
一个Oracle数据库包含一个或者多个表空间。表空间对应数据在磁盘上的物理存储。表空间是从一个或者多个数据文件开始构建的。数据文件是文件系统中的文件或者原始存储的一块空间。
Oracle和MySQL的对比的更多相关文章
- 最新Oracle 和 mysql 的对比参照----开发篇(转)
Oracle mysql 对比版本 Release 10.2.0.1.0 XE windowsXP 5.0.45-community-nt-log MySQL Community Edition ( ...
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- Oracle和MySQL的高可用方案对比【转】
关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...
- Oracle与MySQL的区别对比
本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...
- Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...
- oracle和mysql几点差异对比
Oracle与mysql差异性总结 之前有个项目是用oracle数据库进行开发,需要把数据库改成mysql,遇到了一些地方需要注意的,就简单记了下来. 备注: 再把oracle转成mysql的时候,表 ...
- oracle和mysql批量合并对比
orm框架采用mybatis,本博客介绍一下批量合并merge用oracle和mysql来做的区别, oracle merge合并更新函数的详细介绍可以参考我以前的博客:https://blog.cs ...
- Oracle和Mysql获取uuid的方法对比
场景:orm框架用mybatis,需要往数据库新增一条数据,用Oracle和mysql数据库分别需要怎么实现? mysql方法,用mysql提供的uuid函数 <insert id=" ...
- 聚集索引、非聚集索引、聚集索引组织表、堆组织表、Mysql/PostgreSQL对比、联合主键/自增长、InnoDB/MyISAM(引擎方面另开一篇)
参考了多篇文章,分别记录,如下. 下面是第一篇的总结 http://www.jb51.net/article/76007.htm: 在MySQL中,InnoDB引擎表是(聚集)索引组织表(cluste ...
随机推荐
- Python实现常用的逻辑数据结构
逻辑数据结构包括:线形结构.树形结构.图形结构.集合:存储结构包括:顺序存储.链式存储.索引存储.散列存储. 同一种逻辑结构可以有四种存储结构,不同的存储结构增.删.查.改的速度不同.逻辑结构与存储结 ...
- git clone远程branch和tag
1.查看远程分支 git branch -r 2.测试git clone romete,只是clone远程remote的master,不会clone其他的目录 -------------------- ...
- 【Python】用Python打开csv和xml文件
一.csv文件的读取1 #coding=utf-8 import csv with open("F:\\script\\py_scripts\\test2.csv","r ...
- 数据库级别DDL操作监控审计、数据库触发器/服务器触发器
关键词:数据库触发器/服务器触发器 ,数据库级别DDL操作监控审计,禁止修改登录名密码 [1]数据库级别DDL操作监控审计 转自2012示例库,只能数据库级别,不能实例级别 use database ...
- zabbix 报错汇总
打开zabbix web界面点击profile出现以下报错信息: scandir() has been disabled for security reasons [profile.php:198 → ...
- MongoDB和pymongo自用手册
[*] 本文出处:http://b1u3buf4.xyz/ [*] 本文作者:B1u3Buf4 [*] 本文授权:禁止转载 从自己的另一处博客移动过来.长期维护,不定期添加新内容. 前述和安装 mon ...
- Selenium Webdriver——操作隐藏的元素(四)
页面上弹出的对话框是自动化测试经常会遇到的一个问题:很多情况下对话框是一个iframe,如上一节中介绍的例子,处理起来稍微有点麻烦:但现在很多前端框架的对话框是div 形式的,这就让我们的处理变得十分 ...
- php发送 与接收流文件
PHP 发送与接收流文件 sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php < ...
- matlab 以excel格式将字符串数组写入TXT文件
[m, n] = size(FFoutpu);fp = fopen('FFoutpu.txt','wt');fprintf(fp, 'name CODE ROTC EBIT_EV SHIZHI ROT ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON SigmaImage2
zw版[转发·台湾nvp系列Delphi例程]HALCON SigmaImage2 procedure TForm1.Button1Click(Sender: TObject);var op: HOp ...