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


推荐阅读
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • MySQL 'Too Many Connections' 错误处理及优化方案
    本文详细介绍了如何诊断和解决MySQL数据库中出现的‘Too Many Connections’错误,包括查看当前连接状态、调整配置文件以及优化应用代码等方法。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细介绍了如何检查和配置电脑上的PHP环境,包括位数、运行支持以及文件格式的打开方式。适合初学者了解PHP的基础知识和操作方法。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • PC时代的传奇人物
    回顾过去几十年,个人电脑(PC)的发展历程犹如一部英雄史诗。每一位杰出人物都在这一领域留下了不可磨灭的印记,他们的贡献不仅推动了技术的进步,也深刻影响了现代社会的发展。 ... [详细]
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社区 版权所有