在Python或PostgreSQL中处理数据是否更快,内存效率更高?

问题描述 投票:2回答:2

说我有一个具有5-6列和几百行的PostgreSQL表。使用psycopg2将entire表加载到我的Python程序中并使用Python选择我想要的行并根据需要对行进行排序是否会更有效?或者使用SQL选择所需的行,对它们进行排序并仅将这些特定的行加载到我的Python程序中会更有效。

我所说的“有效”是指:

  1. 内存使用情况。
  2. 速度。

此外,这些因素将随着桌子尺寸的增加而开始变化?说,表现在有几百万行?

python sql postgresql psycopg2
2个回答
2
投票

实际上,如果将已经加载到内存中的数据与从数据库中检索到的数据进行比较,则内存中操作通常会更快。数据库有开销:

  • 它们在同一服务器或不同服务器上的不同进程中,因此数据和命令需要在它们之间移动。
  • 查询需要解析和优化。
  • 数据库支持多个用户,所以其他工作可能正在消耗资源。
  • 数据库维护ACID属性和数据完整性,这会增加额外的开销。

与每个查询的等效内存操作相比,其中的前两个尤其增加了开销。

这并不意味着数据库没有优势,特别是对于复杂的查询:

  • 它们实现了多种不同的算法,并具有优化器来选择最佳算法。
  • 他们可以利用更多资源,特别是通过并行运行。
  • 他们可以(有时)缓存结果,节省大量时间。

数据库的优点不是它们始终提供best性能。优点是它们通过一个简单的界面就可以在非常广泛的请求中提供good性能(即使您不喜欢SQL,我认为您也需要承认它更简单,更简洁,更灵活)用第三代语言编写代码)。

此外,数据库通过ACID属性和其他支持数据完整性的机制来保护数据。


3
投票

在PostgreSQL中执行所有这些操作几乎总是更快。这些数据库系统经过精心设计,可以很好地扩展以处理大量数据,并且针对其典型用例进行了高度优化。例如,他们不必从磁盘加载所有数据即可执行大多数基本过滤器[1]

© www.soinside.com 2019 - 2024. All rights reserved.