Odoo10确认销售订单时多次SELECT stock_picking导致性能变慢
Odoo10销售订单确认操作缓慢:重复执行SELECT stock_picking语句问题排查
问题概述
- 运行5年的Odoo10生产环境中,销售模块【确认订单】操作耗时约50秒,核心瓶颈为重复执行同一条
SELECT stock_picking语句达66次,每次执行耗时约500ms,累计增加30余秒耗时。 - 已排除
stock_picking表自定义字段的影响:在仅启用销售、发票、库存模块的全新Odoo10测试库中,该语句仍会执行12次,确认此问题与Odoo10版本本身相关。
进一步定位(UPDATE 1)
- 触发点锁定:
/addons/sale/models/sale.py文件中的_action_procurement_create函数调用了new_procs.run(),日志显示new_procs仅包含1条procurement_order记录。 - 异常表现:
procurement_order.run()函数执行并返回True前未触发任何查询,但返回后回到_action_procurement_create函数时,出现65次多余的SELECT stock_picking查询,疑似由回调代码触发。 - 补充信息:查看
run()函数注释提到需避免预取,但日志显示该函数仅执行一次,且数据库中所有procurement_order记录状态均为running或done。
内容的提问来源于stack exchange,提问作者Augusto Samamé Barrientos
相关产品推荐
相关产品推荐

