Atitit 为什么oracle这类大型数据库比mysql的性能机制

目录

1. 分区机制差别

1.1. Join算法

1.2. Sql语句性能与trigger

2. Io机制

2.1. 表与索引空间相互分离

2.2. 堆表与索引组织表的的对比

3. Cache

3.1. 物化视图oracle支持

3.2. Query cache

4. 多核支持

4.1. Oracle进程模式与mysql线程模式的对比

4.2. 多核支持oracle更好

4.3. 多核并行查询一条sql oracle支持,mysql不支持

5. 索引机制

5.1. Hash索引 mysql仅仅支持mem存储引擎加hash索引

5.2. 降序索引反向索引

5.3. 索引聚簇表

5.4. 函数索引

6. 同硬件情况与mysql性能对比

6.1. 结论

6.2. 补充

7. Ref

  1. 分区机制差别

Full outer join

不支持

支持

MySQL可以用RIGHTJOIN 和LEFT JOIN合并来做。Oracle 原生支持

递归查询

不支持

支持

MySQL不支持递归查询。

Except(除

不支持

支持

MySQL不支持

Intersect(交集)

不支持

支持

MySQL不支持

并发查询

不支持

支持

MySQLinfobright引擎支持

分区全局索引

不支持

支持

合并各个不同的索引树

分区本地索引

不支持

支持

每个区单独的索引树

  1. Join算法

ForceIndex/Use Index

支持

支持

Oracle hints

join算法

hash join

不支持

支持

MySQL只有普通的嵌套循环算法

merge join

不支持

支持

  1. Sql语句性能与trigger

触发器

DDL触发器

不支持

完美支持

MySQL不支持DDL触发器。Oracle支持基于DDL的触发器。

行触发器

支持

支持

MySQL不能在触发器里面取消对表的更改。Oracle可以在触发器里面取消对表的更改操作

语句触发器

不支持

支持

MySQL不支持。Oracle支持基于基于语句的触发器

触发器合并

不支持

支持

Oracle支持多个触发器合并。

  1. Io机制

    1. 表与索引空间相互分离

表空间

数据库空间

不支持

支持

MySQL只有针对表的表空间,没有针对数据库的表空间。Oracle 有单独的数据库空间。

索引空间

不支持

支持

MySQL的数据以及索引都是放在单独的文件里面。Oracle 有针对专门针对索引的空间。

临时表空间

支持

支持

MySQL5.7 支持临时表空间

  1. 堆表与索引组织表的的对比

Oracle支持堆表,也支持索引组织表
PostgreSQL只支持堆表,不支持索引组织表
Innodb只支持索引组织表

  1. Cache

    1. 物化视图oracle支持
    1. Query cache
  1. 多核支持
    1. Oracle进程模式与mysql线程模式的对比

PostgreSQL和oracle是进程模式,MySQL是线程模式。
进程模式对多CPU利用率比较高。
进程模式共享数据需要用到共享内存,而线程模式数据本身就是在进程空间内都是共享的,不同线程访问只需要控制好线程之间的同步。
线程模式对资源消耗比较少。
所以MySQL能支持远比oracle多的更多的连接。

  1. 多核支持oracle更好
  2. 多核并行查询一条sql oracle支持,mysql不支持
  1. 索引机制

    1. Hash索引 mysql仅仅支持mem存储引擎加hash索引

大数据量下bree要查询三四层,三四次io。。

Hash只需要一次

  1. 降序索引反向索引
  2. 索引聚簇表

索引聚簇表

不支持

支持

Oracle可以把不同的表不同列聚簇。

  1. 函数索引

函数索引

支持

支持

MySQL5.7 支持

条件索引

不支持

支持

Where条件过滤的索引

位图索引

不支持

支持

MySQL不支持

反向索引

支持

支持

MySQL5.7可以用虚拟列来实现

  1. 同硬件情况与mysql性能对比
  1. 结论

场景

插入速度(条/s)

数据容量

1000万总耗时(分)

Oracle+固态硬盘+未做优化

12000

8.3G

13.9

Oracle+机械硬盘+未做优化

10000

8.3G

16.7

Mysql+机械硬盘+Commit=0

3900

7.1G

42.7

Mysql+机械硬盘+Commit=1

3500

7.1G

47.6

PostgreSQL+机械硬盘+未做优化

10300

7.5G

16.3

  1. 补充

对Mysql的doublewrite关闭后进行了性能测试,并没有对数据有多大影响;

  1. Ref

Atitit 数据库对比较 oracle  mysql pgsql

数据库对比 | MySQL vs Oracle - 墨天轮

Atitit 为什么oracle这类大型数据库比mysql的性能机制目录1. 分区机制差别 11.1. Join算相关推荐

  1. oracle lob类型和mysql text_LOB数据类型

    概述 由于无结构的数据往往都是大型的,存储量非常大,而LOB(large object)类型主要用来支持无结构的大型数据.用户可以用LOB数据类型来存储大型的无结构数据,特别是文本,图形,视频和音频等 ...

  2. Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序

    Java List排序 java ListMap 排序 Java listmap 模拟 oracle 排序 Java listmap 模拟 mysql 排序 一.概述 近期的开发工作中,遇到一个需求: ...

  3. Oracle中to_char函数和MySQL中的str_to_date函数区别

    标题Oracle中to_char函数和MySQL中的str_to_date函数 1. str_to_date()----->相当于Oracle中的to_char(): 字符串转换为日期格式 (1 ...

  4. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  5. JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter

    JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter 参考文章: (1)J ...

  6. 关于oracle date类型值0000-0-0的分析

    目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 2 5.1 验证实验... 2 5.2 问题分析... 3 6 延展.. ...

  7. mysql命令4类_【Mysql】mysql数据库的一些常用命令

    一.启动与退出 1.进入MySQL: 输入命令:mysql -u root -p 直接输入安装时的密码即可. 此时的提示符是:mysql> 2.退出MySQL:quit或exit 3.数据库清屏 ...

  8. PHP用于登录的类,基于MySQL

    <? /* *  描述:PHP用于登录的类,基于MySQL */ class Login {     var $username;    //用户名     var $userpass;    ...

  9. oracle连接工具类,c# .net oracle连接工具类

    该类为本人项目使用中的oracle连接工具类 1.先引入OraOps10.dll 2.将该类加入项目中 dll及源码下载地址 源码如下 using System; using System.Colle ...

  10. mysql命令行导入dmp文件,oracle的备份文件(dmp)导入mysql数据库方法

    搜索热词 这个过程分为两步,当然了,如果你本身有安装oracle数据库,那就不要看这个文章了,如果你不想为了一个几十M的dmp文件去安装一个oracle那你可以参考本文章的方法. 第一步:把dmp文件 ...

最新文章

  1. 雷林鹏分享:Redis 管道技术
  2. 如何输出源文件的标题和目前执行行的行数
  3. Funter for Mac:支持快速显示和隐藏文件和文件夹
  4. weka使用训练集分类测试集_Giao 13C NMR计算分类训练集提高结构归属的准确性和可靠性...
  5. Unity Application Block 1.0系列文章
  6. aop springboot 传入参数_springboot用aop做参数校验
  7. 微信小程序this和that
  8. Nitro PDF 数据遭大规模泄露,波及微软、谷歌、苹果等
  9. 如何对一个变量数据进行正则判定_数值数据与数值数据的分析
  10. w3cschool数据库mysql教程_SQLite 简介 | w3cschool菜鸟教程
  11. LogViewer-Unity日志的插件
  12. matlab 正则化表达式_MatLab归一化(正则化)函数
  13. 关键词策略 —关键词选择
  14. 【SpringBoot新手篇】SpringBoot优雅文件上传方式
  15. 手机wps怎么设置打印横竖_手机WPS怎么设置横版打印?
  16. 小学期 异形:达达学长的生死逃亡
  17. 描写火车站场景_描写火车站的句子摘抄
  18. ctp python接口实现 固定金额 止损 止盈
  19. 对话南科大沈平:在人工智能开源中,高校能扮演什么角色?
  20. 100万美金VS100美金FBI本可以在iPhone 5c解锁案中省下一大笔钱

热门文章

  1. fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
  2. oracle授权with,Oracle With 语句语法及示例
  3. win7如何设置wifi热点_win7电脑本地连接连不上怎么办?详细教您如何设置本地连接...
  4. linux缓冲设备,Linux设备驱动程序缓冲策略
  5. matlab在化学中的应用举例,MATLAB在化学中的应用
  6. epoll 和select/poll的区别
  7. TCP/IP网络编程-前三章学习笔记
  8. 行内块 块级元素 行内元素
  9. 《大规模元搜索引擎技(1)》一 2.1 系统体系结构
  10. List集合操作二:排序