为什么 dask read sql table 有时会变慢?
Why does dask read sql table sometimes slow down?
通过FastAPI查询数据时,有时查询速度会提高一倍以上
这是Dataframe查询代码的一部分。
import dask.dataframe as dd
connection_url = URL.create(
"mssql+pyodbc",
username="aabcc",
password="12345",
host="127.0.0.1",
port=2712,
database="test",
query={
"driver": "ODBC Driver 17 for SQL Server",
"Trusted_Connection": "yes",
},
)
def get_data():
df = dd.read_sql_table(table='troya',
uri=connection_url, index_col='no')
df = df.compute()
return df
这是 FastAPI 部分代码的一部分。
@bp.get("/test/{row}")
def test_get(request: Request, row):
df = get_data()
...
如果你能告诉我为什么会出现这个问题,我将不胜感激。
dask
的核心优势之一是能够在多个工作人员之间分配和协调工作量。当使用 dask
加载并立即计算时,这种优势就消失了,因此在上面的代码片段中,以下两行有点反模式:
df = dd.read_sql_table(table='troya',
uri=connection_url, index_col='no')
df = df.compute()
工作是分布式的,但随后必须从工作人员转移到单个客户端节点。解决方案取决于您的用例,如果可以以 parallel/distributed 的方式继续工作,那么 dask
可能仍然很方便,但如果工作流程必须是顺序的,那么 pandas
/ sqlalchemy
可能是更合适的选择。
通过FastAPI查询数据时,有时查询速度会提高一倍以上
这是Dataframe查询代码的一部分。
import dask.dataframe as dd
connection_url = URL.create(
"mssql+pyodbc",
username="aabcc",
password="12345",
host="127.0.0.1",
port=2712,
database="test",
query={
"driver": "ODBC Driver 17 for SQL Server",
"Trusted_Connection": "yes",
},
)
def get_data():
df = dd.read_sql_table(table='troya',
uri=connection_url, index_col='no')
df = df.compute()
return df
这是 FastAPI 部分代码的一部分。
@bp.get("/test/{row}")
def test_get(request: Request, row):
df = get_data()
...
如果你能告诉我为什么会出现这个问题,我将不胜感激。
dask
的核心优势之一是能够在多个工作人员之间分配和协调工作量。当使用 dask
加载并立即计算时,这种优势就消失了,因此在上面的代码片段中,以下两行有点反模式:
df = dd.read_sql_table(table='troya',
uri=connection_url, index_col='no')
df = df.compute()
工作是分布式的,但随后必须从工作人员转移到单个客户端节点。解决方案取决于您的用例,如果可以以 parallel/distributed 的方式继续工作,那么 dask
可能仍然很方便,但如果工作流程必须是顺序的,那么 pandas
/ sqlalchemy
可能是更合适的选择。