我本人比较关心的几点:

  1. 对子查询的优化表现不佳.

  2. 对复杂查询的处理较弱

  4. 性能优化工具与度量信息不足

  12. 支持 SMP (对称多处理器),但是如果每个处理器超过 4 或 8 个核(core)时,Mysql 的扩展性表现较差.

  15. 没有基于回滚(roll-back)的恢复功能,只有前滚(roll-forward)的恢复功能.

  18. 数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行。

  20. 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join).

  21. 大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢.

  26. 每个存储引擎在行为表现、特性以及功能上都可能有很大差异.

  28. 默认的存储引擎(MyISAM)不支持事务,并且很容易损坏.

  30. 有些执行计划只支持特定的存储引擎.特定类型的 Count 查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢.

  31. 执行计划并不是全局共享的,,仅仅在连接内部是共享的.

  33. 没有资源控制.一个完全未经授权的用户可以毫不费力地耗尽服务器的所有内存并使其崩溃,或者可以耗尽所有 CPU 资源.

  45. 复制(Replication)功能是异步的,并且有很大的局限性.例如,它是单线程的(single-threaded),因此一个处理能力更强的 Slave 的恢复速度也很难跟上处理能力相对较慢的 Master.

  46. Cluster 并不如想象的那么完美.或许我已经提过这一点,但是这一点值得再说一遍.

  47. 数据字典(INFORMATION_SCHEMA)功能很有限,并且访问速度很慢(在繁忙的系统上还很容易发生崩溃).

  48. 不支持在线的 Alter Table 操作.

  50. 类似于 ALTER TABLE 或 CREATE TABLE 一类的操作都是非事务性的.它们会提交未提交的事务,并且不能回滚也不能做灾难恢复 .Schame 被保存在文件系统上,这一点与它使用的存储引擎无关.

  从 Oracle 转到 Mysql 前需了解的 50 件事:

  1. 对子查询的优化表现不佳.

  2. 对复杂查询的处理较弱

  3. 查询优化器不够成熟

  4. 性能优化工具与度量信息不足

  5. 审计功能相对较弱

  6. 安全功能不成熟,甚至可以说很粗糙.没有用户组与角色的概念,没有回收权限的功能(仅仅可以授予权限).当一个用户从不同的主机/网络以同样地用户名/密码登录之后,可能被当作完全不同的用户来处理.没有类似于 Oracle 的内置的加密功能.

  7. 身份验证功能是完全内置的.不支持 LDAP,Active Directory 以及其它类似的外部身份验证功能.

  8. Mysql Cluster 可能与你的想象有较大差异.

  9. 存储过程与触发器的功能有限.

  10. 垂直扩展性较弱.

  11. 不支持 MPP (大规模并行处理).

  12. 支持 SMP (对称多处理器),但是如果每个处理器超过 4 或 8 个核(core)时,Mysql 的扩展性表现较差.

  13. 对于时间、日期、间隔等时间类型没有秒以下级别的存储类型.

  14. 可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱.

  15. 没有基于回滚(roll-back)的恢复功能,只有前滚(roll-forward)的恢复功能.

  16. 不支持快照功能.

  17. 不支持数据库链(database link).有一种叫做 Federated 的存储引擎可以作为一个中转将查询语句传递到远程服务器的一个表上,不过,它功能很粗糙并且漏洞很多.

  18. 数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行。

  19. 优化查询语句执行计划的优化器提示非常少.

  20. 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join).

  21. 大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢.

  22. 不支持位图索引(bitmap index).每种存储引擎都支持不同类型的索引.大部分存储引擎都支持B-Tree 索引.

  23. 管理工具较少,功能也不够成熟.

  24. 没有成熟能够令人满意的 IDE 工具与调试程序.可能不得不在文本编辑器中编写存储过程,并且通过往表(调试日志表)中插入记录的方式来做调试.

  25. 每个表都可以使用一种不同的存储引擎.

  26. 每个存储引擎在行为表现、特性以及功能上都可能有很大差异.

  27. 大部分存储引擎都不支持外键.

  28. 默认的存储引擎(MyISAM)不支持事务,并且很容易损坏.

  29. 最先进最流行的存储引擎 InnoDB 由 Oracle 拥有.

  30. 有些执行计划只支持特定的存储引擎.特定类型的 Count 查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢.

  31. 执行计划并不是全局共享的,,仅仅在连接内部是共享的.

  32. 全文搜索功能有限, 只适用于非事务性存储引擎. Ditto 用于地理信息系统/空间类型和查询.

  33. 没有资源控制.一个完全未经授权的用户可以毫不费力地耗尽服务器的所有内存并使其崩溃,或者可以耗尽所有 CPU 资源.

  34. 没有集成商业智能(business intelligence), OLAP 多维数据集等软件包.

  35. 没有与 Grid Control 类似的工具(http://solutions.mysql.com/go.php?id=1296&t=s)

  36. 没有类似于 RAC 的功能.如果你问”如何使用 Mysql 来构造 RAC”,只能说你问错了问题.

  37. 不支持用户自定义类型或域(domain).

  38. 每个查询支持的连接的数量最大为 61.

  39. MySQL 支持的 SQL 语法(ANSI SQL 标准)的很小一部分.不支持递归查询、通用表表达式(Oracle 的 with 语句)或者窗口函数(分析函数).支持部分类似于 Merge 或者类似特性的 SQL 语法扩展,不过相对于 Oracle 来讲功能非常简单.

  40. 不支持功能列(基于计算或者表达式的列,Oracle11g 开始支持计算列,以及早期版本就支持虚列(rownum,rowid)).

  41. 不支持函数索引,只能在创建基于具体列的索引.

  42. 不支持物化视图.

  43. 不同的存储引擎之间,统计信息差别很大,并且所有的存储引擎支持的统计信息都只支持简单的基数(cardinality)与一定范围内的记录数(rows-in-a-range). 换句话说,数据分布统计信息是有限的.更新统计信息的机制也不多.

  44. 没有内置的负载均衡与故障切换机制.

  45. 复制(Replication)功能是异步的,并且有很大的局限性.例如,它是单线程的(single-threaded),因此一个处理能力更强的 Slave 的恢复速度也很难跟上处理能力相对较慢的 Master.

  46. Cluster 并不如想象的那么完美.或许我已经提过这一点,但是这一点值得再说一遍.

  47. 数据字典(INFORMATION_SCHEMA)功能很有限,并且访问速度很慢(在繁忙的系统上还很容易发生崩溃).

  48. 不支持在线的 Alter Table 操作.

  49. 不支持 Sequence.

  50. 类似于 ALTER TABLE 或 CREATE TABLE 一类的操作都是非事务性的.它们会提交未提交的事务,并且不能回滚也不能做灾难恢复 .Schame 被保存在文件系统上,这一点与它使用的存储引擎无关.

从Oracle转到Mysql前需了解的50件事的更多相关文章

  1. 从Oracle迁移到Mysql之前必须知道的50件事

    1. 对子查询的优化表现不佳. 2. 对复杂查询的处理较弱 3. 查询优化器不够成熟 4. 性能优化工具与度量信息不足 5. 审计功能相对较弱 6. 安全功能不成熟,甚至可以说很粗糙.没有用户组与角色 ...

  2. 开始3D编程前需注意的十件事

    http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...

  3. Web API核查表:设计、测试、发布API时需思考的43件事[转]

    Web API核查表:设计.测试.发布API时需思考的43件事   当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是 ...

  4. Web前端新手想提升自身岗位竞争力,需做好这3件事!

    Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...

  5. debian 9 安装后需做的几件事

    debian 9 安装后需做的几件事 安装环境:X86 >> Debian 9 Linux/GNU apt源更新 注意连上有线网络 刚安装好的debian系统中,/etc/apt/sour ...

  6. 安装mysql后必做的两件事

    1..删除掉不需要的用户 查看用户表mysql> SELECT User,Host FROM mysql.user; +------+-------------------------+ | U ...

  7. Java编程中“为了性能”需做的26件事

    1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: (1)控制资源的使用,通过线程同步来控制 ...

  8. 转载:Cocos2D-x 游戏接入 Windows 设备所需做的六件事

    原文地址:http://msopentech.com/zh-hans/blog/2014/05/09/cocos2d-x-%E6%B8%B8%E6%88%8F%E6%8E%A5%E5%85%A5-wi ...

  9. 换新 iPhone 前要做的 9 件事

    iPhone 6 以及 iPhone 6 Plus 终于在众人的期盼下发布了,是不是很多朋友都跃跃欲试,想入手新的 iPhone 呢?若你手中持有旧款 iPhone 的话,其实更换成新机后,还有不少事 ...

随机推荐

  1. 在Hibernate映射文件里配置Sequence

    <!--注意该id的数据类型以及<generator>节点下的<param>节点的写法--> <id name="id" type=&qu ...

  2. jquery自动完成插件的使用

    .ui-autocomplete { z-index: !important; max-height: 100px; overflow-y: auto; /* 防止水平滚动条 */ overflow- ...

  3. arttemplate.js简洁写法案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. javascript中构造函数的三种方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. What's Dead & Exploded in Swift's exception stack?

    The Swift compiler marks function arguments for a number of reasons, mostly related to internal opti ...

  6. js 按钮连击 减少触发事件次数

    <body> <input type="button" onClick="testbtn()" value="测试按钮"& ...

  7. NP是什么意思?

    举例叙述(转自百度百科,纯为学习笔记) 编辑 在一个周六的晚上,你参加了一个盛大的晚会.由于感到局促不安,你想知道这一大厅中是否有你已经认识的人.你的主人向你提议说,你一定认识那位正在甜点盘附近角落的 ...

  8. 2104 -- K-th Number

    Description You are working for Macrohard company in data structures department. After failing your ...

  9. redhat的systemd版本list

    acess https://access.redhat.com/errata/#/ https://github.com/lnykryn/systemd-rhel redhat 知识库 redhat ...

  10. 数据结构(3) 第三天 栈的应用:就近匹配/中缀表达式转后缀表达式 、树/二叉树的概念、二叉树的递归与非递归遍历(DLR LDR LRD)、递归求叶子节点数目/二叉树高度/二叉树拷贝和释放

    01 上节课回顾 受限的线性表 栈和队列的链式存储其实就是链表 但是不能任意操作 所以叫受限的线性表 02 栈的应用_就近匹配 案例1就近匹配: #include <stdio.h> in ...