暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

数据库对比 | MySQL vs Oracle

数据与人 2020-12-15
7842

(小声嘀咕,画这些图可累死我了)


PS:本文手机浏览方式不太友好,有条件请使用电脑浏览。


言归正传。

笔者从架构、事务、性能、开发等层面详细对比了MySQL和Oracle,帮助读者更快理解它们之间的共同点和不同点。

本文核心内容思维导图



架构方面
特性
MySQL
Oracle
说明
表类型相关
可拔插式引擎架构
支持
不支持
MySQL:MyISAM, InnoDB, NDB, Brighthouse, Archive, Blackhole.
堆表
部分支持
支持
MySQL仅MyISAM引擎支持。
索引组织表
不支持
支持
MySQL InnoDB引擎
索引聚簇表
不支持
支持
Oracle可以把不同的表不同列聚簇。
嵌套表
不支持
支持
自定义类型的元素是表
闪回表
不支持
支持
回收站
数据库与模式
不支持
支持
MySQL的模式即为数据库。Oracle的用户即模式

架构方面
特性
MySQL
Oracle
说明
二进制日志
支持
不支持
MySQL支持二进制日志。
归档日志
不支持
支持
Oracle支持归档日志。
读水平扩展
完美支持
支持
Oracle DataGuard
写水平扩展
支持
支持
Oracle RAC
Memcached api
支持
不支持
Oracle Timesten
数据文件加密
不支持
支持
数据,表空间


事务方面
特性
MySQL
Oracle
说明
事物
DDL事物
不支持
不支持
一样
数据页大小可配置
支持
支持
MySQL基于表;Oracle基于数据库


性能方面
特性
MySQL
Oracle
说明
索引
聚集索引
部分支持
支持
MySQL仅InnoDB主键默认为聚集索引。
部分索引
支持
不支持
MySQL支持把一个字段的前几个字符作为索引。
函数索引
支持
支持
MySQL5.7 支持
条件索引
不支持
支持
Where条件过滤的索引
位图索引
不支持
支持
MySQL不支持
反向索引
支持
支持
MySQL5.7可以用虚拟列来实现

性能方面
特性
MySQL
Oracle
说明
ForceIndex/Use Index
支持
支持
Oracle hints
join算法
hash join
不支持
支持
MySQL只有普通的嵌套循环算法
merge join
不支持
支持
Query Cache
支持
支持
MySQL缓存执行结果;Oracle 缓存执行计划。


性能方面
特性
MySQL
Oracle
说明
物化视图
不支持
支持

表空间
数据库空间
不支持
支持
MySQL只有针对表的表空间,没有针对数据库的表空间。Oracle 有单独的数据库空间。
索引空间
不支持
支持
MySQL的数据以及索引都是放在单独的文件里面。Oracle 有针对专门针对索引的空间。
临时表空间
支持
支持
MySQL5.7 支持临时表空间


性能方面
特性
MySQL
Oracle
说明
Full outer join
不支持
支持
MySQL可以用RIGHTJOIN 和LEFT JOIN合并来做。Oracle 原生支持
递归查询
不支持
支持
MySQL不支持递归查询。
Except(除
不支持
支持
MySQL不支持
Intersect(交集)
不支持
支持
MySQL不支持
并发查询
不支持
支持
MySQLinfobright引擎支持
分区全局索引
不支持
支持
合并各个不同的索引树
分区本地索引
不支持
支持
每个区单独的索引树

性能方面
特性
MySQL
Oracle
说明
动态处理
存储过程
支持
支持
MySQL只有存储过程里面才能有动态处理语句。
存储函数
不支持
支持
MySQL存储函数不支持动态处理语句。
触发器
不支持
支持
MySQL触发器里不支持动态处理语句。

性能方面
特性
MySQL
Oracle
说明
触发器
DDL触发器
不支持
完美支持
MySQL不支持DDL触发器。Oracle支持基于DDL的触发器。
行触发器
支持
支持
MySQL不能在触发器里面取消对表的更改。Oracle可以在触发器里面取消对表的更改操作
语句触发器
不支持
支持
MySQL不支持。Oracle支持基于基于语句的触发器
触发器合并
不支持
支持
Oracle支持多个触发器合并。


开发方面
特性
MySQL
Oracle
说明
函数参数默认值
不支持
支持
MySQL必须对参数显式的调用。
表字段函数默认值
支持
支持
MySQL只能把now()用作时间戳字段的默认值
列check约束
不支持
支持

序列
不支持
支持

分析函数
不支持
支持
MySQL提供了C的API来实现

开发方面
特性
MySQL
Oracle
说明
丰富的字段类型
数组类型
不支持
支持
Oracle有varray
记录类型
不支持
支持
MySQL只支持返回某个字段值
表类型
不支持
支持
Oracle有嵌套表
机器类型
不支持
支持
Pls_integer,..
拷贝类型
不支持
支持
Tb.field%type
自定义类型
不支持
支持


开发方面
特性
MySQL
Oracle
说明

不支持
支持
Oracle可以把函数,存储过程等封装起来。
json类型
支持
支持
MySQL5.7 支持
xml类型
不支持
支持
MySQL不支持
原生plsql调试工具
不支持
支持
SQL Developer
session变量
支持
支持
Oracle叫线程变量
语句块
不支持
支持
MySQL只能在存储过程里面实现


其他
特性
MySQL
Oracle
说明
角色
不支持
支持
MySQL只有用户的概念
记录权限
不支持
支持
限制特定记录的权限
dblink
不支持
支持

别名
不支持
支持

快照
不支持
支持
MySQL可用replication间接实现
用第三方语言来写PLSQL
不支持
支持
MySQL必须重新编译源码来实现



文章转载自数据与人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论