3 回答
TA贡献1836条经验 获得超4个赞
Your program starts
Connect to database
do some SQL (selects/inserts/whatever)
do some more SQL (selects/inserts/whatever)
do some more SQL (selects/inserts/whatever)
...
Disconnect from database
Your program ends
也就是说,在程序期间只要需要就保持连接打开。(即使你没有明确断开连接,程序的终止也会终止。在做网站时要注意这一点很重要——每个“页面”本质上都是一个单独的“程序”;无法保持数据库连接页之间。)
你还有另一个隐含的问题......“我应该一次抓取一批行,然后在客户端处理它们吗?” 答案是“视情况而定”。
如果可以在 SQL 中完成处理,那么在 SQL 中进行处理可能会更有效率。示例:总结一些数字。
如果您从一个表中获取一些行,然后对于这些行中的每一行,从另一个表中获取行...使用 SQL 会更有效率JOIN。
“批处理”可能不相关。客户端界面大概是
Fetch rows from a table (possibly all rows, even if millions)
Look at each row in turn.
请提供您将对百万行执行的具体操作,以便我们进行更具体的讨论。
轮询循环:
如果您每分钟只检查一次要执行的新任务,请务必每次都重新连接。
鉴于此,挂在池之间的结果集上没有意义。
TA贡献1777条经验 获得超3个赞
是的,第二种方法是正确的做法。以下是一些原因:
多次运行查询会产生开销。
您正在使用的表中的基础数据可能会发生变化,并且单独的批次可能会不一致。
您取决于结果的顺序,并且排序可能有重复。
添加回答
举报