热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL与MySQL相比,优势何在?:wal设置

PostgreSQL类似于Oracle的多进程框架,可以支持高并发的应用场景wal设置。如果把OracleDBA转到PostgreSQL数据库上是比较容易的,

PostgreSQL类似于Oracle的多进程框架,可以支持高并发的应用场景wal设置。如果把Oracle DBA转到PostgreSQL数据库上是比较容易的,毕竟PostgreSQL数据库与Oracle数据库很相似。

PostgreSQL与MySQL相比,优势何在?

PostgreSQL几乎支持所有的SQL标准,支持类型相当丰富wal设置。PostgreSQL数据库的源代码要比MySQL数据库的源代码更容易读懂,如果团队的C语言能力比较强的话,就可以在PostgreSQL数据库上做开发,比方说实现类似greenplum的系统,这样也能与现在的分布式趋势接轨。

PostgreSQL与MySQL相比,优势何在?

为了说明PostgreSQL的功能,下面从“从Oracle迁移到Mysql之前必须知道的50件事”简要对比一下PostgreSQL数据库与MySQL数据库之间的差异wal设置

PostgreSQL与MySQL相比,优势何在?

从Oracle迁移到Mysql会面对的50件难事1、对子查询的优化表现不佳wal设置。(PostgreSQL可解决)

2、 对复杂查询的处理较弱wal设置。(PostgreSQL可解决)

3、 查询优化器不够成熟wal设置。(PostgreSQL可解决)

PostgreSQL完全支持SQL-92标准,对SQL的支持也很全面,可以支持复杂的SQL查询wal设置

4、 性能优化工具与度量信息不足wal设置。(PostgreSQL可解决)

PostgreSQL提供了执行计划和详细的cost值,可以方便看到SQL的执行效率wal设置

5、 审计功能相对较弱wal设置

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

7、 身份验证功能是完全内置的,不支持LDAP、Active Directory或其它类似的外部身份验证功能wal设置

8、 Mysql Cluster可能与你想象的有较大差异wal设置

9、 存储过程与触发器的功能有限wal设置。(PostgreSQL可解决)

PostgreSQL提供了完善的存储过程和触发器支持wal设置

10、 垂直扩展性较弱wal设置

11、 不支持MPP(大规模并行处理)wal设置。(PostgreSQL可解决)

PostgreSQL是类似Oracle数据库的多进程架构,而不像MySQL是多线程的架构,所以能支持MPPwal设置

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

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

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

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

16、 不支持快照功能wal设置

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

18、 数据完整性检查非常薄弱,即使是基本的完整性约束,也往往不能执行wal设置。(PostgreSQL可解决)

PostgreSQL提供完善的数据完整性检查机制,支持外键wal设置

19、 优化查询语句执行计划的优化器提示非常少wal设置

20、 只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join)wal设置。(PostgreSQL可解决)

PostgreSQL则支持这些表连接类型wal设置

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

PostgreSQL数据不存在这个问题,假设表T的两个字段col1的col2上有两个索引,idx_1和idx_2,那么select * from t where col1=:a and col2=:b;查询时,PostgreSQL数据库有可能把这个查询转化为select * from t where col1=:a intersect select * from t where col2=:b,这样两个索引都可以使用上wal设置

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

23、 管理工具较少,功能也不够成熟wal设置

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

25、 每个表都可以使用一种不同的存储引擎wal设置。(PostgreSQL可解决)

26、 每个存储引擎在行为表现、特性以及功能上都可能有很大差异wal设置。(PostgreSQL可解决)

27、大部分存储引擎都不支持外键wal设置。(PostgreSQL可解决)

28、默认的存储引擎(MyISAM)不支持事务,并且很容易损坏wal设置。(PostgreSQL可解决)

29、最先进最流行的存储引擎InnoDB由Oracle拥有wal设置。(PostgreSQL可解决)

30、有些执行计划只支持特定的存储引擎wal设置。特定类型的Count查询,在这种存储引擎中执行很快,在另外一种存储引擎中可能会很慢。(PostgreSQL可解决)

PostgreSQL只有一种存储引擎,所以不存在上面的情况wal设置。而PostgreSQL支持完善的事务。

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

32、全文搜索功能有限, 只适用于非事务性存储引擎wal设置。 Ditto用于地理信息系统/空间类型和查询。(PostgreSQL可解决)

PostgreSQL数据库支持全文搜索,支持更多类型的索引,如B-tree,R-tree, Hash, GiST, GIN,R-tree,GIST,GIN索引可用于空间类型和查询wal设置

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

34、没有集成商业智能(business intelligence), OLAP **数据集等软件包wal设置

35、 没有与Grid Control类似的工具

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

37、不支持用户自定义类型或域(domain)wal设置。(PostgreSQL可解决)

PostgreSQL支持丰富的类型,同时也支持自定义类型wal设置

38、 每个查询支持的连接的数量最大为61wal设置

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

这些PostgreSQL数据库都支持,如窗口函数wal设置

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

41、不支持函数索引,只能创建基于具体列的索引wal设置。(PostgreSQL可解决)

PostgreSQL支持函数索引wal设置

42、不支持物化视图wal设置

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

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

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

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

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

48、不支持在线的Alter Table操作wal设置

49、 不支持Sequencewal设置。(PostgreSQL可解决)

PostgreSQL支持sequencewal设置

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

PostgreSQL不存在这个问题wal设置

每种数据库都有不同的应用场景PostgreSQL具备了更高的可靠性,对数据一致性、完整性的支持高于MySQL,因此PostgreSQL更加适合严格的企业应用场景,MySQL查询速度较快,更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景wal设置

PostgreSQL与MySQL相比,优势何在?

以上个人浅见,欢迎批评指正wal设置

认同我的看法wal设置,请点个赞再走,感谢!

喜欢我的wal设置,请关注我,再次感谢!


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
author-avatar
试管婴儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有