Hi,
I have question regarding parallel processing of requests.
We use the following (simplified) code to run fulltext searches on multiple databases with xquery:fork-join() in parallel. The performance is tracked and logged with prof:time().
declare function documents:search-dbs($dbs as xs:string*, $query as xs:string) as element()* { let $funcs := for $db in $dbs return function() { documents:search-db($db, $query) } return xquery:fork-join($funcs) };
declare function documents:search-db($db as xs:string, $query as xs:string) as element()* { let $data := prof:time( (: Run fulltext search on database here :) (), 'documents:search-db(' || $db || ') ' ) return $data };
The log output looks like this:
17:58:54.125 SERVER admin TRACE documents:search-db(MD) 127.19 ms 17:58:54.139 SERVER admin TRACE documents:search-db(OEM) 142.39 ms 17:58:54.226 SERVER admin TRACE documents:search-db(CS) 229.55 ms 17:58:54.485 SERVER admin TRACE documents:search-db(TEST) 487.16 ms 17:58:54.989 SERVER admin TRACE documents:search-db(ALL) 991.72 ms 17:58:55.205 SERVER admin TRACE documents:search-db(POC) 1206.7 ms 17:58:56.461 SERVER admin TRACE documents:search-db(RO) 2462.38 ms 17:59:00.964 SERVER admin TRACE documents:search-db(US) 6965.86 ms 17:59:01.424 SERVER admin TRACE documents:search-db(PT) 7425.54 ms 17:59:02.260 SERVER admin TRACE documents:search-db(MI) 8262.05 ms 17:59:04.142 SERVER admin TRACE documents:search-db(XP) 10144.15 ms 17:59:05.300 SERVER admin TRACE documents:search-db(AT) 11301.95 ms 17:59:06.353 SERVER admin TRACE documents:search-db(CT) 12356.84 ms 17:59:12.157 SERVER admin TRACE documents:search-db(MR) 18158.48 ms 17:59:14.042 SERVER admin TRACE documents:search-db(LS) 20043.82 ms 17:59:14.999 SERVER admin TRACE documents:search-db(DA) 21000.18 ms
To me it seems that the requests are not done in parallel. The request time is always cumulative.
Questions: - Is this just an issue of the prof:time() logging? - Do the searches really run in parallel? - Or are they maybe blocked and serialized by some database lock?
Any help to analyse this will be appreciated.
Best Regards Johannes
basex-talk@mailman.uni-konstanz.de