热门标签 | 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设置,请关注我,再次感谢!


推荐阅读
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Juval Löwy主张,每个类都应被视为服务,这并非是为了让服务无处不在,而是因为微服务是经过深思熟虑后系统分解的自然结果。在他的设计和构建的系统中,这种理念有助于提高模块化、可维护性和扩展性。通过将每个类视为独立的服务,系统能够更好地应对复杂性,实现更灵活的部署和更高的性能。 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 在PHP多线程扩展开发中,面临的主要挑战之一是多线程调用PHP用户类方法时可能出现的内存错误。具体表现为当多个线程同时调用同一个类实例的同一方法时,系统会抛出内存错误。为了解决这一问题,本文深入分析了PHP多线程扩展的实现机制,并提出了几种有效的解决方案和技术思路,包括线程安全的类设计、内存管理优化以及线程同步机制的改进。通过这些方法,可以显著提升PHP多线程扩展的稳定性和性能。 ... [详细]
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社区 版权所有