首页
新闻
分析
评测
专题
视频
论坛
技巧
资源
问答
活动
课程
观点
数据
产品
搜索
搜索
Oracle、MySQL、PostgreSQL的比较与选型
2023-10-10 14:38
本文从优化引擎、索引、审计、数据类型、对事物的支持等方面对Oracle、MySQL、PostgreSQL数据库进行了比较。通过比较,我们可以根据自己的需要进行选择。现在选择正确的数据库。希望对您有帮助。 本文从以下几个方面对Oracle、MySQL和PostgreSQL进行了比较。接下来我们就来一一介绍。 混合SQL(优化引擎) 无论您选择哪一种,SQL 都是您与数据库交互的基础和最关键的方式。也正是从这里开始,这三个平台开始真诚告别。 Oracle 支持极其复杂的查询、几乎无限数量的表以及所有类型的联接和合并。虽然Oracle有很多功能,但它真正有价值的是它的基于成本的优化器,它可以分析SQL,如果可能的话重写和简化,根据成本选择索引,确定表的操作等等。所有其他各种功能。 阅读 MySQL 文档,您会发现有偏差的性能描述和提供者契约定义的详细信息使得优化器和性能调优在任何平台上都变得复杂。对于任何连接或视图中表的最大数量,MySQL 的合法最大大小为 61。还是那句话,我个人觉得对这么多表的查询无论如何在任何一个应用程序中都很难使用,所以正如上面提到的,现在使用优化器而不是查询最大表格式等更加实用。 Postgresql 8.x 版本支持所有 SQL92 规范,几乎没有任何限制。同样,我认为您会看到一个数据库比另一个数据库更好的地方在于优化方面。混合查询可能会变得混乱,而查询计划是诊断功能瓶颈的最好朋友。 指数类型 索引技能对于数据库功能至关重要,Oracle 有许多选项可供选择。有大量不同的索引类型,包括规范二叉树、翻译键、基于函数、经常被误用的位图索引,甚至索引表。随着辅助技术的进步,数据库管理员可以使用提供索引的 Oracle Text,它允许您搜索 CLOB(字符大对象),而 Oracle Spatial 则为基于位置的数据提供索引。 在 MySQL 中,我们找到二叉树、哈希、纯文本和 GIS 索引(用于基于位置的数据)。还有聚集索引,但如果说我使用 Oracle 的经验教会了我什么的话,即使是这些也很容易与大多数应用程序无关。因此,大多数时候我在 Oracle、MySQL 或 Postgres 应用程序中看到的都是二叉树索引。此外,虽然像 MySQL 中那样基于函数的索引不可用,但可以通过使用此函数创建另一个保存数据的列来模拟它们,然后添加触发器来安装它。 Postgresql 提供二叉树和哈希,以及 R 树,以及它自己定制的 GiST 索引类型。 GiST索引类型允许使用用户定义的类型,并允许创建基于函数的索引 www.hack95.com。 Oracle 提供了类似的函数类型,并且其基于函数的索引可用于基于 pl/sql 的函数,而不是标准预定义的系统函数,例如您可能会使用的 trunc 和 UPPER。请注意,访问这样的索引可能会非常慢,并且在谈论输入或删除数据时您甚至可能不想听到“慢”这个词。 它确实有效,而且优化器选择索引的方式比 www.hack95.com 更好。 审计 Oracle 允许您通过检查索引工具来审核表或文件。一旦获得批准,您可以查看对表的插入、更新或删除、登录,甚至特定用户的所有访问。它有很多选项,并且将它们设置为工作非常容易。 Postgresql 也具有此功能,并且它看起来与 Oracle 一样灵活且适应性强。 另一方面,MySQL似乎没有提供此功能,但是您当然可以创建自己的存储过程和触发器来执行您想要的操作,并将相关信息输入到数据表中,这只需要一点额外的工作。 数据类型 Oracle、MySQL 和 Postgresql 都支持高达 4GB 的大型二进制和文本数据。我们所知道和喜爱的所有数据类型也非常有用,例如数字、字符和日期。每个都在某种程度上提供了一些自定义数据类型,尽管我很少看到它们在应用程序中使用。 我现在想说的一件事是,Postgresql和MySQL已经超越了以前的样子,不用担心它们实现了我们经常使用的良好的自增列类型。 Oracle的答案是按顺序做这件事效率更高,但它是静态的。 Oracle没有规定数据类型,这个数据类型非常重要。它不仅仅是一种时间数据类型,这种数据类型在 Postgresql 和 MySQL 中都可用。然而,您会发现您可以在这三个数据库产品平台上进行您想要的所有日期和时间操作,从操作时区到管理距离等等。我痴迷于 Postgresql 和 MySQL 的另一个原因是它们支持各种优秀的数学数字类型,从smallint到decimal、real、double等。这些都是使用与编程语言中可用的数据类型相称的粗略架构来实现的比如C. 事务支持 在数据库领域,正确的事务管理符合 ACID 的缩写,它意味着原子性、一致性、隔离性和持久性。原子性意味着事务是一个综合单元,要么全部提交,要么全部回滚。统一意味着您从一种有效状态转移到另一种有效状态,即您强制执行适当的限制来添加业务逻辑。隔离意味着一个事务在完成(提交)之前无法看到另一事务正在做什么。永久性意味着一旦提交,更改就是永久性的,并且对于防止硬盘驱动器出现故障“至关重要”。 关于这个问题我有话要说,希望避免辩解。例如,Oracle 在其数据字典中自己的功能视图不是事务性的。其次,在那种环境中它们可能永远都不需要。类似这样的应用还有很多。我见过一个航空票务系统需要定期升级并添加第二台服务器来容纳 Oracle。他们研究了软件的所有相关许可成本和大型设备的硬件成本。然后他们回顾这一漏洞。有些人正确地认识到,航空公司网站上90%的操作是航班浏览(只读),而只有10%是实际购买机票。因此,他们创建了一套低成本的MySQL服务器用于交换航班,同时更改行程请求被提交到大型Oracle服务器进行票务操作。多么好的综合治疗计划啊! 是的,MySQL 在事务性 InnoDB 表方面已经取得了长足的进步。这也可以解释甲骨文收购Innobase的原因。有些人仍然认为 MySQL 只是 LDAP 或 NFS 的 SQL 接口。然而,MySQL 无疑已经取得了长足的进步,并将继续这样做。 Postgresql 在这一点上更全面,所以我想说你能看到的主要区别是与 Oracle 的功能区别,这就是它的问题。 就职 从我们数据库平台的各个部分可以看出,选择数据库平台时需要考虑的因素有很多。从功能全面性,到供应商支持和联合支持,再到性能和优化。在充分了解您正在创建的应用程序及其真正需求之前,不要投入太多。最后你可能会觉得这些很模糊,很难确定,但是只要有一点创造力,仔细思考这个主题,再加上一个良好的开发环境,你应该能够想出一个经济有效且功能强大的解决方案。 关于 Oracle、MySQL 和 PostgreSQL 之间的比较就这么多了。如果您有不同的意见,欢迎您与我们分享。 【编辑精选】 Oracle跟踪文件分析工具TKPROF的使用介绍 如何在 Oracle 10g OEM 中配置主机身份验证 ASP 通过 OLE 的 Oracle 对象查询 Oracle 环境变量阻止 www.hack95.com 连接 Oracle 的案例 PLSQL Developer8连接Oracle 10g X64版本报错的解决办法
相关推荐
新闻
分析
评测
专题
视频
论坛
技巧
资源
问答
活动
课程
观点
数据
产品