返回

文章详情

Orasort:使用Oracle过期专利的5倍快速列排序

Hacker News2026年7月6日 16:17

Oracle的排序算法专利已过期;现在可在公共领域使用。Oracle是全球最受欢迎的数据库产品之一。高度复杂的应用程序依赖Oracle来处理其关键数据和交易。Oracle不得不发明许多优化技术,以使其数据库更快、更可靠。其中一种发明是针对数据库表的排序技术。Oracle发明了一种名为Orasort的算法,使排序速度提高了5倍。Oracle团队不仅智能地实施了它,还在CPU级别进行了优化。本文将用简单的语言解释Orasort算法,即使是没有经验的程序员也能理解。该算法的专利是为Mark Callaghan注册的。在2024年达到20年期限后,Orasort的专利自动到期,进入公共领域。我们将了解这个算法的工作原理,云公司如AWS和开源社区从中获得的好处,以及其他重要内容。在我们开始理解Orasort如何工作之前,我们需要了解传统排序的工作方式以及它如何影响Oracle的性能。传统排序在数据库管理系统中的工作方式 字符串排序 在传统排序算法中,一个字符串中的每个字符与另一个字符串中相应的字符进行比较。排序是逐字符在两个字符串之间进行的。它不仅依据第一个字符进行排序,例如以“A”开头的值;数据库还需要对以“A”开头的值进行排序。考虑以下示例。两个以“A”开头的值:Apple Amazon 现在,开始对这两个单词进行排序。“A”在两个单词中是相同的。现在,需要检查第二个字符。“P”与“M”进行比较,由于M < P,因此根据第二个字符作出决定。现在,升序为:Apple Amazon 上述比较很简单;数据库管理系统只需比较两个字符。现在考虑第二个示例。Applet Apples 在这里,比较将继续直到最后一个字符,升序将为:Apples Applet 现在考虑以下示例。Apple is good Apple is bad 在这里,比较将会消耗更多的CPU周期。升序将为:Apple is bad Apple is good 所以,这就是传统排序的工作方式。我们可以想象它是多么耗时。Orasort作为救世主 传统的排序方法使用逐字符的比较,简言之是1字节的比较。Orasort提出了一个非常聪明的想法,Oracle团队利用了CPU寄存器。一个CPU寄存器自然是8字节大小,如果Oracle从两个字符串提取8字节进行比较,则需要的寄存器和CPU周期就更少。Oracle从两个值中提取前8字节并将这些字节转换为64位整数。然后,每个值变成一个单独的64位整数,比较的另一个值也进行相同的处理。如果做出了决定,则比较停止。否则,它将提取下一个8字节,继续比较。订阅我们,以获取终身免费内容。Orasort提供的好处 开源数据库 自从成为公共领域以来,Orasort为开源社区提供了巨大的好处。开源数据库(包括MySQL和PostgreSQL)已经集成了Orasort并正在进行实验。云计算中的成本削减 公司使用云服务来开展业务。Orasort降低了由于CPU周期减少而导致的运营成本。Orasort的高级流程 关键提取和归一化 假设一个表有一万条记录,名为“email”的列被选中进行排序。则会将一万条记录加载到RAM中的一个缓冲区中。但是,这些记录不会全部取出其所有值;仅为每条记录生成键和值。这些记录被加载到排序区域,在那里进行排序。现在,之前讨论的Orasort过程发生在这个排序区域,它是RAM的一部分。但是如果记录达到几百万条呢?Oracle无法将所有记录指针加载到缓冲区。在这种情况下,Oracle创建多个部分的数据,并将其保存在磁盘上以备将来使用。然后,它一次将这些部分带入RAM中。将排序后的数据写回磁盘 写入是一个异步任务,Oracle不采取一次性写入所有排序数据的方式。它使用中间写入的方法,在Orasort仍在运行时进行持续写入。当写入完成时,最终合并在磁盘上发生。DSS不是普通的技术博客;我们研究开源项目,充当技术记者,并向您提供几乎所有技术平台的深度技术信息。考虑订阅我们。我们正在建立一个社区,您将在其中获得此类文章的终身免费访问权限。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡