PostgreSQL与MySql比较

所需积分/C币:30 2018-03-17 08:02:11 274KB PDF

PostgreSQL与MySql比较
CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较 ersion1.0) 目录 MYSQL与 POSTGRESC对比 2. MYSQL与 POSTGRESO对比二 口着■ 21两者不同的背景 11 2.2MYQL的主要优点 2 23 POSTGRBQL的主要优点: 2.4MYQL和 POSTGR8QL选择 14 3. MYSQL POSTGRESC时比三 15 3.1历史对比 5 32 POSTGRE SQL特性和功能 15 33 MYSQL特性和功能 16 34社区为王 3. 共享许可 17 36小结 18 保密级别:秘密 CUGUbiRTLS团队,2014 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) 1. MySQL Postgre SQL对比一 Postgre SQL由于是类似 Oracle的多进程框架,所以能支持高并发的应用场景,这点 与 Oracle数据库很像,所以把 Oracle DBA转到 PostgreSQL数据库上是比较容易的,毕 竟 PostgreSQL数据库与 Oracle数据库很相似。同时, Postgre SQL数据库的源代码要 比 MySQL数据库的源代码更容易读懂,如果团队的 C语言能力比较强的话,就能在 PostgreSQL数据库上做开发,比方说实现类似 greenplum的系统,这样也能与现在的分 布式趋势接轨。 为了说明 PostgreSαL的功能,我下面简要对比一下 PostgreSQL数据库与 My SQL 数据库之间的差异 我们先借助 Jametong翻译的"从 Oracle迁移到Mysq之前必须知道的50件事",看 一看如何把 Oracle转到 MySQL中的困难 1.对子查询的优化表现不佳 2.对复杂查询的处理较弱 3.查询优化器不够成熟 4.性能优化工具与度量信息不足 5.审计功能相对较弱 6.安全功能不成熟,甚至可以说很粗糙没有用户组与角色的概念没有回收权限的功能 (仅仅可以授予权限).当一个用户从不同的主机/网络以同样地用户名/密码登录之后,可 能被当作完全不同的用户来处理没有类似于 Oracle的内置的加密功能 7.身份验证功能是完全内置的不支持 LDAP, Active Directory以及其它类似的外部身 份验证功能 8 Mysql Cluster可能与你的想象有较大差异 保密级别:秘密 CUG UbiRTLS团队,2014 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) 9.存储过程与触发器的功能有限 10.垂直扩展性较弱 11.不支持MPP(大规模并行处理) 12.支持SMP(对称多处理器),但是如果每个处理器超过4或8个核(core)时, Mysql的 扩展性表现较差 13.对于时间、日期、间隔等时间类型没有秒以下级别的存储类型 14.可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱 15.没有基于回滚(rol-back)的恢复功能,只有前滚(rol- orward)的恢复功能 16.不支持快照功能 17.不支持数据库链( database link).有一种叫做 Federated的存储引擎可以作为-个中 转将査询语句传递到远程服务器的一个表上,不过,它功能很粗糙并且漏洞很多 18.数据完整性检査非常薄弱,即使是基本的完整性约束,也往往不能执行。 19.优化查询语句执行计划的优化器提示非常少 20.只有一种表连接类型嵌套循环连接( nested-oop),不攴持排序-合并连接(sort- merge join)与散列连接( hash join) 21.大部分查询只能使用表上的单一索引;在某些情况下,会存在使用多个索引的查询但 是查询优化器通常会低估其成本,它们常常比表扫描还要慢 22.不支持位图索引( bitmap index).每种存储引擎都攴持不同类型的索引大部分存储引 擎都支持B-Tree索引 23.管理工具较少,功能也不够成熟 24.没有成熟能够令人满意的IDE工貝与调试程序.可能不得不在文本编辑器中编写存 保密级别:秘密 @cUG ubirtls团队,2014 4 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) 储过程,并且通过往表(调试日志表)中插入记录的方式来做调试 25.每个表都可以使用一种不同的存储引擎 26.每个存储引擎在行为表现、特性以及功能上都可能有很大差异 27.大部分存储引擎都不支持外键 28.默认的存储引擎( MyISAM)不支持事务,并且很容易损坏 29.最先进最流行的存储引擎 InnoDB由 Oracle拥有 30.有些执行计划只支持特定的存储引擎特定类型的 Count査询,在这种存储引擎中执 行很快,在另外—种存储引擎中可能会很慢 31.执行计划并不是全局共享的,仅仅在连接内部是共享的 32.全文搜索功能有限,只适用于非事务性存儐引擎Dit用于地理信息系统/空间类型 和查询 33.没有资源控制一个完全未经授权的用户可以毫不费力地耗尽服务器的所有内存并 使其崩溃,或者可以耗尽所有CPU资源 34.没有集成商业智能( business intelligence),OLAP*数据集等软件包 35.没有与 Grid Control类似的工具 (http://solutions.mysql.com/go.php?id=1296&t=s) 36.没有类似于RAC的功能如果你问“如何使用Mysq来构造RAC,只能说你问错了 问题 37.不支持用户自定义类型或域( domain) 38.每个查询支持的连接的数量最大为61 39.MysαL支持的SQL语法( ANSI SQL标准)的很小部分.不支持递归查询、通用表 保密级别:秘密 @cUG ubirtls团队,2014 5 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) 表达式( Oracle的with语句)或者窗口函数(分析函数)支持部分类似于 Merge或 者类似特性的SQL语法扩展,不过相对于 Oracle来讲功能非常简单 40.不支持功能列(基于计算或者表达式的列, Oracle11g开始支持计算列,以及早期版本 就支持虚列( (rownum,rowd) 41.不支持函数索引,只能在创建基于具体列的索引 42.不支持物化视图 43.不同的存储引擎之间统计信息差别很大,并且所有的存储引擎支持的统计信息都只 支持简单的基数( cardinality)与一定范围内的记录数( OWS-In-a- range).换句话说,数据 分布统计信息是有限的更新统计信息的机制也不多 44.没有内置的负载均衡与故障切换机制 45.复制( Replication)功能是异步的并且有很大的局限性例如,它是单线程的( single- threaded),因此一个处理能力更强的 Slave的恢复速度也很难跟上处理能力相对较慢的 Master 46. Cluster并不如想象的那么完美或许我已经提过这一点,但是这一点值得再说一遍 47.数据字典( NFORMATION SCHEMA)功能很有限,并且访问速度很慢(在繁忙的系 统上还很容易发生崩溃) 48.不支持在线的 Alter table操作 49.不支持 Sequence 50.类似于 ALTER TABLE或 CREATE TABLE一类的操作都是非事务性的它们会提 交未提交的事努,并且不能回滚也不能做灾难恢复 Schame被保存在文件系统上,这- 点与它使用的存储引擎无关 保密级别:秘密 @cUG ubirtls团队,2014 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) PostgreSQL数据库可以解决以上问题中的 1.对子查询的优化表现不佳 2.对复杂查询的处理较弱 3.查询优化器不够成熟 PostgreSQL完全支持SQL-92标准,对SQL的支持也很全面,可以支持复杂的SQL 查询。 4.性能优化工具与度量信息不足 PostgreSQL提供了执行计划和详细的cost值,可以方便看到SQL的执行效率。 9.存储过程与触发器的功能有限 Postgre SQL提供了完善的存储过程和触发器支持。 11.不支持MPP(大规模并行处理) 而 PostgreSQL是类似 Oracle数据库的架构,是多进程的架构,而不像MSQL是多 线程的架构,所以能支持MPP。 18.数据完整性检查非常薄弱即使是基本的完整性约朿,也往往不能执行。 PostgreSQL提供完善的数据完整性检査机制,支持外键。 20.只有一种表连接类型:嵌套循环连接(η ested-oop),不攴持排序-合并连接(sor- merge 保密级别:秘密 GCUG UbiRTLS团从,2014 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) join)与散列连接( hash join) 而 Postgre SQL则支持这些表连接类型 21.大部分查询只能使用表上的单一索引在某些情况下,会存在使用多个索引的查询,但 是查询优化器通常会低估其成本,它们常常比表扫描还要慢 PostgreSQL数据不存在这个问题,假设表T的两个字段co1的c2上有两个索 引jdx_1和idx2,那么 select* from t where col1=: a and col2=:b;查询时 PostgreSQL数据库有可能把这个查询转化为 select* from t where col1=: a intersect select* from t where col2=:b,这样两个索引都可以使用上。 25.每个表都可以使用一种不同的存储引擎 26.每个存储引擎在行为表现、特性以及功能上都可能有很大差异 27.大部分存储引擎都不支持外键 28.默认的存储引擎(MsAM)不支持事务,并且很容易损坏 29.最先进最流行的存储引擎 InnoDB由 Oracle拥有 30.有些执行计划只支持特定的存储引擎特定类型的 Count査询,在这种存储引擎中执 行很快,在另外—种存储引擎中可能会很慢 PostgreSQL只有一种存储引擎,所以不存在上面的情况。而 PostgreSQL支持完善的 事务 32.全文搜索功能有限,只适用于非事务性存储引擎Dito用于地理信息系统/空间类型 和查询 保密级别:秘密 @cUG ubirtls团队,2014 CUG UbiRTLS团队: P-RTLS PostgreSQL与MySq比较( Version10) PostgreSQL数据库支持全文搜索,支持更多类型的索引,如B-tre,R-tree,Hash, GiST,GN, R-tree,GsT,GN索引|可用于空间类型和查询。 37.不支持用户自定义类型或域( domain PostgreSQL攴持丰富的类型,同时也支持自定义类型。 39. My SQL支持的SαL语法( ANSI SQL标准)的很小一部分不支持递归查询、通用表 表达式( Oracle的wih语句)或者窗口函数(分析函数)支持部分类似于 Merge或 者类似特性的SQL语法扩展,不过相对于 Oracle来讲功能非常简单 这些 Postgre SQL数据库都支持,如窗口函数 41.不支持函数索引,只能在创建基于具体列的索引 PostgreSQL支持函数索引 49.不支持 Sequence. PostgreSQL支持 sequence 50.类似于 ALTER TABLE或 CREATE TABLE一类的操作都是非事务性的:它们会提 交未提交的事务,并且不能回滚也不能做灾难恢复 Schame被保存在文 件系统上,这一点与它使用的存储引擎无关 PostgreSQL不存在这个问题。 保密级别:秘密 @cUG ubirtls团队,2014 9

...展开详情
试读 19P PostgreSQL与MySql比较
img
coderzero

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐
    PostgreSQL与MySql比较 30积分/C币 立即下载
    1/19
    PostgreSQL与MySql比较第1页
    PostgreSQL与MySql比较第2页
    PostgreSQL与MySql比较第3页
    PostgreSQL与MySql比较第4页
    PostgreSQL与MySql比较第5页
    PostgreSQL与MySql比较第6页

    试读已结束,剩余13页未读...

    30积分/C币 立即下载 >