`
vipshichg
  • 浏览: 266890 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从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被保存在文件系统上,这一点与它使用的存储引擎无关。

 

我本人比较关心的几点:

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被保存在文件系统上,这一点与它使用的存储引擎无关。

原文出处: Baron Schwartz 

6
0
分享到:
评论

相关推荐

    Oracle到mysql的迁移步骤及各种注意事项_数据库.docx

    Oracle 到 MySQL 的迁移步骤及各种注意事项 数据库迁移是一个复杂的过程,需要了解源数据库和目标数据库的结构、数据类型、存储过程等方面的差异。从 Oracle 到 MySQL 的迁移尤其需要注意以下几个方面: 1. 数据...

    Oracle到mysql的迁移步骤及各种注意事项_数据库.pdf

    Oracle 到 MySQL 的迁移步骤及各种注意事项 Oracle 到 MySQL 的迁移是一项复杂的任务,需要考虑到各种因素,例如存储过程的迁移、数据类型的转换、异常处理等。在本文中,我们将讨论 Oracle 到 MySQL 的迁移步骤及...

    oracl转mysql注意事项

    ### Oracle转MySQL注意事项详解 #### 一、概述 在企业级应用中,有时需要将现有的Oracle数据库迁移到MySQL,这不仅涉及到技术上的挑战,还可能影响到整个系统的稳定性和性能。本文档旨在提供一个全面的指南,帮助...

    Oracle数据库表转换为Mysql

    四、转换注意事项 在转换过程中,需要注意以下几点: (1)表结构的更改:在转换过程中,可能需要手动更改表结构,以适应Mysql数据库的要求。 (2)数据长度的限制:在转换过程中,需要注意数据长度的限制,以免...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    8. **注意事项**:数据迁移时需考虑字符集兼容性,因为MySQL和Oracle可能使用的字符集不同,可能导致编码问题。 9. **优化与调整**:转换后的Oracle表可能需要根据Oracle的最佳实践进行一些调整,如分区策略、索引...

    MYSQL到ORACLE程序迁移的注意事项

    MySQL到Oracle数据库迁移的过程中,需要注意一系列的差异和调整,以确保迁移后的应用程序能够正常运行。以下是一些关键点的详细说明: 1. **自动增长的数据类型处理**: 在MySQL中,`AUTO_INCREMENT`字段自动分配...

    Oracle的表结构转成Mysql的表结构

    本文介绍的`fnc_table_to_mysql`函数能够有效地帮助用户从Oracle迁移到MySQL时,快速地生成对应的表结构。尽管存在一定的局限性,但通过调整参数和手动检查生成的结果,可以有效地满足大多数迁移场景的需求。

    oracle数据库转mysql数据库免费工具

    Oracle数据库和MySQL数据库是两种广泛...通过理解其工作原理和注意事项,可以更有效地进行数据库迁移,确保业务连续性和数据安全性。在使用过程中,遵循最佳实践和充分的规划,可以降低迁移风险,实现顺利的数据转换。

    从mysql转换到oracle数据库.docx

    本文将详细介绍从 MySQL 转换到 Oracle 数据库的步骤和注意事项。 一、分表结构及表数据两次导出 在转换过程中,我们需要将 MySQL 数据库的表结构和数据分别导出两次。第一次导出是将表结构导出,第二次导出是将表...

    把mysql数据库中的数据导入到oracle数据库中

    ### 把MySQL数据库中的数据导入到Oracle数据库中的详细步骤与注意事项 #### 一、环境配置与需求概述 本文档旨在详细介绍如何将MySQL数据库中的数据迁移到Oracle数据库中,包括具体的环境配置、迁移流程以及可能...

    mysql转oracle要注意的几项

    以下是从给定文件中提炼出的几个关键知识点,详细阐述了在MySQL到Oracle的数据迁移过程中需要注意的事项: ### 1. 使用CASE WHEN语句进行条件判断 在MySQL中,可以使用`IF`函数来根据条件返回不同的值,但在Oracle...

    Convert Oracle to Mysql

    总之,从Oracle到MySQL的迁移是一个复杂的过程,涉及多个步骤和潜在挑战。"ora2mysqcn.exe"这样的工具简化了这一过程,但理解背后的原理和操作步骤仍然至关重要,以确保数据的安全和迁移的成功。在实际操作中,根据...

    怎样DBLink_Oracle到MySql

    本文将详细介绍如何建立从Oracle数据库到MySQL数据库的连接(DBLink),并探讨这一过程中的关键步骤和技术细节。 #### 1. 安装环境 在开始之前,确保已经正确安装了以下软件: - **Oracle Database**:Oracle...

    oracle转mysql.rar

    总的来说,"oracle转mysql.rar"中的内容将涵盖上述诸多方面的详细转换方法和注意事项,帮助开发者顺利跨越这两个数据库系统之间的鸿沟,有效地进行数据迁移和集成工作。理解并掌握这些知识点,对于提高跨平台开发的...

    oracle转换mysql工具1

    这个工具可能包含了多种功能,旨在帮助用户轻松地迁移数据,从Oracle环境过渡到MySQL环境。Oracle和MySQL都是广泛使用的数据库管理系统,但它们在语法、特性以及管理方式上存在差异,因此在数据库迁移过程中需要这样...

    oracle迁移mysql说明

    #### 四、迁移过程中的注意事项 1. **数据一致性验证**: - 迁移前后应进行数据一致性验证,确保数据完整性和准确性。 - 可以通过比较表记录数量、执行相同的查询语句等方式来进行验证。 2. **性能优化**: - ...

    oracle2mysql

    Oracle到MySQL的数据迁移是一项常见的任务,特别是在企业进行数据库系统升级或更换时。Oracle是一款功能强大的关系型数据库管理系统,而MySQL则以其开源、免费和高效的特点受到广泛应用。"oracle2mysql"工具就是为了...

    Convert Mysql to Oracle

    在这个过程中,我们首先需要从Mysql数据库中提取数据,然后根据Oracle数据库的结构和规范对数据进行转换,最后将转换后的数据加载到Oracle数据库中。"Convert Mysql to Oracle"工具简化了这一过程,使得数据迁移更加...

Global site tag (gtag.js) - Google Analytics