运行 远程查询 cx_Oracle 时使用了哪台计算机的资源?

Which computer's resources are used when running a cx_Oracle query remotely?

我找不到与此类似的问题,并且在 Quora 和 Reddit 上没有运气。我真的很感激被指出正确的方向,因为我真的超出了我的深度。

我想将笔记本电脑连接到远程服务器。接下来,我想 运行 在远程服务器上 Python 中编写的 cx_Oracle 查询,以从存储在另一台远程服务器上的 Oracle 数据库中提取数据。

例如:

import cx_Oracle
import pandas as pd
conn = cx_Oracle.connect(user="ABC", password="DEF", ip=...) # Pretend this works
query_string = """SELECT Col1, Col2, Col3
                  FROM TABLE_1
                  WHERE [Col1] > [Col2]
                  AND [Col3] <> 99""")
df = pd.read_sql(query_string, myconnection)

TABLE_1 很大(超过 100GB)。应用 WHERE 语句后,结果下降到大约 3 GB。

如果我在第一台服务器上执行此查询以从第二台服务器提取数据,那么在 运行 运行脚本时将使用哪个服务器的资源?特别是,第一台服务器会尝试在其 RAM 中加载 TABLE_1 还是仅将过滤后的结果存储在 df 中?

您执行的任何查询都会 运行 在数据库服务器上。应用 where 子句来减少数据量将使用数据库服务器上的更多资源,但会减少必须传输到客户端(计算机 运行 运行您的 Python 程序)的数据量。因此,根据 where 子句(索引是否用于减少数据库服务器上的负载?)和网络速度以及数据库服务器和客户端的能力,您可以决定将负载放在哪里。但是,通常减少客户端需要处理的数据量和服务器需要传输给客户端的数据量是有意义的。