我正在尝试执行一个大型选择查询(从200000万行,15列中大约有5000万个查询),并使用psycopg2将所有这些数据提取到pandas数据帧中。在pgadmin服务器状态工具中,我可以看到我的查询处于活动状态约半小时,然后变为空闲状态。我读到它意味着服务器正在等待新命令。另一方面,我的python脚本仍然没有数据,它也在等待数据(没有错误,看起来数据正在下载)。
总而言之,数据库正在等待,python正在等待,我还应该等待吗?有机会结帐吗?还是python无法处理大量od数据?
答案 0 :(得分:1)
圣烟,蝙蝠侠!如果您的查询需要花费几分钟以上的时间来执行,那么您应该考虑另一种处理数据的方式!如果您要返回20亿行的15个单字节列,则假设不是单个字节的开销,这已经是3 GB的原始数据,这是非常不可能的。如果这些列是64位整数,则已经是24 GB。这是很多要用于Python的内存数据。
您是否考虑过在执行过程中进程失败或连接中断会发生什么情况?如果可能的话,您的程序将从分批处理数据行中受益。如果确实不可能,请考虑对数据库本身进行操作的方法,例如使用PL / pgSQL。