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

Oracle、MySQL和PostgreSQL三种数据库的对比

本文从以下几个方面来对Oracle、MySQL和PostgreSQL进行比较,接下来我们就一一开始介绍。混杂SQL(优化引擎)SQL是你与你的数据库交互的基础和最关键的措施,无论你抉择哪个。这三个平台也恰恰是从它开始恳挚离别。Oracle扶持极其混杂的查询、几乎不局

本文从以下几个方面来对OracleMySQLPostgreSQL进行比较,接下来我们就一一开始介绍。

混杂SQL(优化引擎)

SQL是你与你的数据库交互的基础和最关键的措施,无论你抉择哪个。这三个平台也恰恰是从它开始恳挚离别。Oracle扶持极其混杂的查询、几乎不局限表的个数、所有的种类的连接和并合。固然Oracle有许多功能,然而它恳挚贵重的却是它基于成本的优化器,它能够分析SQL、万一可能的话举行重写和简化、基于成本抉择索引、定夺对表的垄断和它之中的所有其它的各种功能。

阅读MySQL的文档,你会觉察对偏向于功能的描写和供给约定义的细节使优化器和功能调剂在任何平台上都很混杂。MySQL法定的最大规模是在任何连接或在一个视图中表的最大数目为61个。再顺次的,我个人感受无论如何在任何一个利用中这么多表的一个查询将是难以利用的,因而正如上面提到的,现在更实用的是优化器而不是查询最大表格式,等等。

8.x版本的Postgresql扶持所有SQL92规范,几乎未曾任何局限。再顺次的,我感受你会看到的一个数据库优于其它的数据库的方面即便在优化方面。混杂的查询会变得混乱,并且查询计划是你在诊断功能瓶颈时的良好的朋友。

索引种类

索引技巧对于数据库功能是至关重要的,而Oracle有许多的选项可供抉择。有极其多的不同的索引种类,包括规范的二进制树、转换键的、基于功能的、常被讹谬利用的位图索引,甚至还有索引表。随着附带项技巧的进展,数据库管教员有了可用的供给索引的Oracle文本,它批准你搜查CLOB(字符大对象),并且Oracle Spatial供给用于基于位置的数据的索引。

在MySQL中,我们觉察有二进制树、哈希、纯文本和GIS索引(对于基于位置的数据)。还有集群索引,然而万一说我在Oracle方面的经验给我任何点拨的话,那么即便大多数利用等闲是不相干的。因而,大多数情形下我在Oracle、MySQL或Postgres利用中看到的只有二进制树索引。另外,尽管像在MySQL中基于功能的索引是不可用的,然而他们能够穿越创立另一个保留利用这个函数的数据的列来举行模仿,然后增加一个引发器来将安装它。

Postgresql供给二进制树和哈希,还有R树,和它自己定制的GiST索引种类,GiST索引种类批准利用用户定义的种类和批准创立基于功能的索引zhengduan.com。Oracle供给了一个相仿的功能性种类,它的基于功能的索引能够用于基于pl/sql的功能而不但是规范的预定义系统功能,例如你本来可能会利用的trunc、UPPER。要当心像这么的索引可能拜会起来极其缓慢,你可能在谈论到要录入或移除数据时,甚至不渴望听到“慢”这个词。

它确乎告终了,并且优化器抉择索引的措施优于Oraclesh-ra.org。

审计

Oracle使你能够对一个表或一个文件举行审计,穿越审查索引工具。一旦批准了,你能够审查对某一个表的插入、更新或剔除,可能登录,或甚至是某一特定用户的所有拜会。它有众多选项,并且设置为可用的是极其容易的。

Postgresql也有这秉功能,并且它看起来和Oracle的一样灵便和可搭配的。

另一方面MySQL看起来未曾供给这秉功能,然而你当然能够创立你自己的存储过程和引发器来做你想做的,并录入相干的消息到数据表里,这只必需一点额外的工作。

数据种类

Oracle、MySQL和Postgresql都扶持最大到达4GB的大型的二进制和文本数据。我们所懂得并迷恋的所有的数据种类也是极其有用的,例如数字、字符和日期。每一个都在定然程度上供给一些定制数据种类,尽管我很少看到在利用中利用这些。

目前我要讲的一件事是Postgresql和MySQL曾经超过了过去的基础,无须担心它们告终我们经常利用的一个良好的自增长列种类。Oracle的答辩是按次序来做这项工作更加管用,然而是静态的。Oracle也未曾SET数据种类,这个数据种类很重要。它也未曾只有工夫的工夫数据种类,这个数据种类Postgresql和MySQL都有。然而你会觉察你能在这三个数据库品平台上做所有你想做的关于日期和工夫的垄断,从对时区的垄断到对间隔的处理,等等。

另外一个我迷恋Postgresql和MySQL的原因是它们扶持各种良好的数学数字种类,从smallint到decimal、real、double,等等。这些利用了大约的架构告终,与编程语言中可用的数据种类相相称,例如C语言。

对事务的扶持

在数据库领土,贴切的事务垄断顺从了acronym到ACID,这意味着原子性、统一性、隔绝性和永远性。原子性含义是一个事务是一个全面的单元,所有都被提交或所有都被回滚。统一性含义是你从一个*VALID*事态迁移到另一个,例如你厉行贴切的局限来加深业务逻辑。隔绝性含义是一个事务不能看到另一个事务在做什么,直到它告终了(提交了)。永远性含义是一旦提交了,这个改变即便永远的,并且是遏止你硬盘失利的*至关重要的*。

关于这个问题我有一些事情要说,渴望能够避免答辩。例如,Oracle在它的数据字典中的它本身的功能视图就不是事务型的。其次,它们在那个环境中大约未曾必需。有众多利用是这么的。我看过一个航空票务系统,它必需定期升级和增加第二个服务器用于放置Oracle。他们看了这个软件的所有相干的批准成本和大型装备的硬件成本。然后他们回头看这个利用。有些人准确的认识到在航空网站上90%的垄断是博览航班(只读),而仅仅10%才是恳挚的购买机票。因而,他们发生了一组低成本的MySQL服务器用于博览航班,而改变旅程哀求则提交给大型的Oracle服务器来厉行票务垄断。多么好的一个结 合处理计划!

是的,MySQL在事务方面的InnoDB表方面曾经走了很长一段路。这也批准以解释为什么Oracle购买Innobase。一些人依旧感受MySQL只是一个用于LDAP或NFS的SQL接口。然而,MySQL确乎走了很长的路并且将继续前行着。

在这点上Postgresql更全面,因而我会说你能看到的重要是和Oracle的功能方面的不同,这即便它的问题。

归纳

正如你在我们的数据库平台的多个局部中看到的,抉择一个数据库平台时要琢磨许多事情。从功能全面性,到供给商扶持和共同扶持,到功能和优化。在你富余打听你在发生的利用和它恳挚必需什么之前,不要投资过多。到了最后你可能感受这些比拟笼统,并且难以确定,然而有了一点发明性,精细思忖这个主题,并且具有一个好的开发环境,你就该当能够得出一个成本高效并壮大的处理计划来。

关于Oracle、MySQL和PostgreSQL的比较介绍这么多吧,如果您有不同的见解,也欢迎您与我们分享。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
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社区 版权所有