热门标签 | 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的比较介绍这么多吧,如果您有不同的见解,也欢迎您与我们分享。


推荐阅读
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • mysql数据库json类型数据,sql server json数据类型
    mysql数据库json类型数据,sql server json数据类型 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 本文介绍如何通过整合SparkSQL与Hive来构建高效的用户画像环境,提高数据处理速度和查询效率。 ... [详细]
  • 如何处理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社区 版权所有