http://blog.sina.com.cn/s/blog_61e034d50100k6xn.html

近期突击学习了mysql,应杨毅的邀请,简单比较一下mysql和oracle的差别,不当之处欢迎大家指正。

一、并发性

并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。

mysql:

mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。

虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。

oracle:

oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。

二、一致性

oracle:

oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,

每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。

mysql:

mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。

session更新数据时,要加上排它锁,其他session无法访问数据。

三、事务

oracle很早就完全支持事务。

mysql在innodb存储引擎的行级锁的情况下才支持事务。

四、数据持久性

oracle

保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,

如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。

mysql:

默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。

五、提交方式

oracle默认不自动提交,需要用户手动提交。

mysql默认是自动提交。

六、逻辑备份

oracle逻辑备份时不锁定数据,且备份的数据是一致的。

mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。

七、热备份

oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。

mysql:

myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作。

innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。

innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。

八、sql语句的扩展和灵活性

mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。

oracle在这方面感觉更加稳重传统一些。

九、复制

oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。

mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。

十、性能诊断

oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等

mysql的诊断调优方法较少,主要有慢查询日志。

十一、权限与安全

mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。

oracle的权限与安全概念比较传统,中规中矩。

十二、分区表和分区索引

oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。

mysql的分区表还不太成熟稳定。

十三、管理工具

oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。

mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。

mysql和oracle转换_转MySql 与Oracle区别相关推荐

  1. mysql数据库引擎转换_[转]MySQL数据库引擎

    经常用MySQL数据库,但是,你在用的时候注意过没有,数据库的存储引擎,可能有注意但是并不清楚什么意思,可能根本没注意过这个问题,使用了默认的数据库引擎,当然我之前属于后者,后来成了前者,然后就有了这 ...

  2. mysql 数据库字符集转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

  3. mysql 查询编码转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

  4. mysql 隐式失误_评“MySQL 隐式转换引起的执行结果错误”

    今天看到一篇关于MySQL隐式转换引发执行结果错误的文章: ====================================================================== ...

  5. mysql not in 转化_解析MySQL隐式转换问题

    一.问题描述 root@mysqldb 22:12: [xucl]> show create table t1G *************************** 1. row ***** ...

  6. mysql日期隐式转换_关于MySQL隐式转换

    一.如果表定义的是varchar字段,传入的是数字,则会发生隐式转换. 1.表DDL 2.传int的sql 3.传字符串的sql 仔细看下表结构,rid的字段类型: 而用户传入的是int,这里会有一个 ...

  7. mysql 中有什么命令_常用mysql命令大全

    常用的MySQL命令大全 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命 ...

  8. c连接mysql数据库字符串函数_在mysql数据库—— 字符串函数的运用

    在mysql数据库中函数的使用 字符函数: 函数名称 描述 concat 字符连接 Concat_ws 使用指定的分隔符进行字符连接 format 数字格式化(千分化) Lower 转换成小写字母 u ...

  9. mysql 集群操作系统_高性能MySQL集群详解(二)

    一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一 ...

最新文章

  1. 换个角度聊系统稳定性建设(2021版)
  2. 【系统架构师修炼之道】(1):『序』
  3. 前缀和?or差分序列?
  4. Android 操作SQLite基本用法
  5. 【最爽的日期工具包LocalDate·超爽,超实用】(Java8版本)
  6. 音视频技术开发周刊 81期
  7. C#(.Net)中调用Sql sever汉字字符串显示为?问号
  8. 动态代理之: com.sun.proxy.$Proxy0 cannot be cast to 问题
  9. pytorch:admm
  10. 【HTML+CSS网页设计与布局 从入门到精通】第11章-CSS
  11. RateLimiter
  12. [刘阳Java]_CSS数字分页效果
  13. 2009年最受欢迎jQuery插件
  14. Web前端开发-为网页元素添加阴影效果
  15. hao123站长李兴平的成功史
  16. 整型和字符串相互转换
  17. 75行代码 完美实现图片完整展示 flex 横向瀑布流布局
  18. C\C++中头文件string与string.h的区别
  19. vue实现收起展开面板,让你的页面动态起来
  20. SCAU 2022 Java综合性实验

热门文章

  1. NumPy快速入门--复制/视图/深拷贝
  2. 武林c语言,详解C语言中条件编译
  3. sed搜索某行在行末追加_示范sed指定某行插入 追加和全局替换
  4. js获取当前url_javascript如何获取当前URL的主机名?
  5. python节日贺卡图片大全_新年贺卡图片_新年贺卡手工制作图片
  6. c语言函数能改变指针吗,如何修改传递给C中函数的指针?
  7. 最新蚂蚁金服Java面试题:Docker+秒杀设计+RocketMQ+亿级数据设计
  8. 论文浅尝 | 利用机器翻译和多任务学习进行复杂的知识图谱问答
  9. 论文浅尝 - 计算机工程 | 知识图谱可视化查询技术综述
  10. Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器