summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_controller.js
diff options
context:
space:
mode:
authorxmo-odoo <xmo@odoo.com>2018-05-24 14:50:13 +0200
committerGitHub <noreply@github.com>2018-05-24 14:50:13 +0200
commit4ac7820afb1653aaafa4b251eb1b82a921f5f2a2 (patch)
tree7131905ace7bbc5fc51a5083acd39294c68125ee /addons/web/static/src/js/views/basic/basic_controller.js
parenta06066b920f5d59105dc285cf3f0f0f77da8cd80 (diff)
[IMP] export: move XIDs management to end of export & batch further
* export benches for m2o * tag benches instead of requiring editing the source to enable them * dump the profiling stats intead of saving to disk (less convenient for complex analysis but way more so for simple overview) * add M2O benching in addition to the existing integer-based one in order to expose problematic behaviour when exporting significant numbers of non-shared relational records (& quantify impact of creation v read) Following odoo/odoo#22493 the performances of exporting XIDs was greatly improved by batching XIDs and avoiding the ~3 SQL queries per xid/record when no xid exists yet. *However* the batching was done per call of _export_rows and to handle relational fields _export_rows calls itself recursively leading to sub-standard xid batching: * for M2M and O2M fields, some batching would happen on a parent-record basis, each M2M or O2M field (in a parent) would be xid-batched, but two parent records wouldn't see their children xid-batched together * for M2O, there would be essentially no batching with a call to __ensure_xml_id per record and while less queries than before in the worst case more complex ones in fact Change: rather than ensure XIDs exist when performing the export, add XIDs export as a post-processing of the exported records table. This way, each involved model can be entirely batched and exporting 10000 records's (id, value_id/id) 2 calls instead of 10001. Also rename _export_rows's recursion parameter for clarity, it has clearly outgrown its use as a batch invalidation flag and the name is now less than clear. Furthermore _-prefix & mandate kwarg usage to make it clearer it's not really a "public" parameter, and is intended as an internal recursion flag.
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_controller.js')
0 files changed, 0 insertions, 0 deletions