为什么通过SQLAlchemy会话首次查询较慢
我正在分析一个SQLAlchemy的仓库方法,用来获取某个日期的订单
def test_profile_get_orders_asof():
for i in range(1, 11):
with DBContextManager() as session:
data_repo = SqlAlchemyRepository(session)
sut = data_repo.get_orders_asof
sut = profile(
sut, immediate=True, filename=f"get_orders_asof_{i}.prof"
)
sut(datetime(2022, 12, 1, tzinfo=pytz.utc))
而且这个方法第一次调用的总执行时间总是比较长
[1.3190752999999988,
0.2215163999999999,
0.25437130000000036,
0.19252480000000013,
0.1886178,
0.22220109999999996,
0.21765510000000007,
0.2034394999999999,
0.19447940000000002,
0.20421450000000013]
这个方法 data_repo.get_orders_asof
大概是这样的
from datetime import datetime
import pandas as pd
def get_orders_asof(self, date: datetime) -> pd.DataFrame:
asof_date = date.strftime("%Y-%m-%d")
column_types = {
"id": "int",
"quantity": "int",
"price": "float",
"date": "str"
}
return pd.read_sql(
"SELECT * FROM Orders WHERE order_date <= ?",
con=self.session.get_bind(), params=(asof_date,), dtype=column_types
)
它是针对一个SQL Server数据库执行的。为什么第一次调用会比后面的调用慢这么多呢?数据库有没有在缓存什么东西?
0 个回答
暂无回答