Christian, 

Is it possible to add index only for "EnvelopeID" since only this field is in 
where clause?
May be it will speed up the queries..

24.05.2018, 14:47, "Ветошкин Владимир" <en-tra...@yandex.ru>:
> Thank you Christian for your kind words :)
>
> I rewrote queries as you said.
> It helped and now query completes in about 3 seconds. Anyway, it's better.
>
> Also I added text index for this base.
> And there are 2 records about index in the "Info View" panel:
> - apply text index for $envs_49
> - rewrite where clause(s)
> - simplify gflwor
> - pre-evaluate db:open("000999") to document-node() sequence
> - apply text index for $invenvs_51
> - rewrite where clause(s)
> - simplify gflwor
>
> I attached the file, which contains the full text from the panel.
>
> 24.05.2018, 13:12, "Christian Grün" <christian.gr...@gmail.com>:
>>>   I thought about "random access patterns"
>>>   But all databases are on one disk.
>>
>>  I agree, this sounds confusing at first sight. Some more details: If
>>  the same database is opened by multiple queries, only one instance
>>  will be opened. The same data cursor is used to read data, and if the
>>  data is accessed in parallel, this cursor will repeatedly moved,
>>  leading to adverse access patterns. This may be not so bad if
>>  different databases are accessed (in this case, we’ll have multiple
>>  cursors). But it’s also possible to write queries that show the
>>  opposite effect (slow parallel access on multiple databases, fast
>>  parallel access on single databases), so it also depends on the
>>  specific queries (if sequential scans are performed, if index access
>>  is possible, etc.) and your data sets.
>>
>>  In general, you benefit a lot if your queries take advantage of the
>>  available index structures (see [1] for more information). You can
>>  open the "Info View" panel in BaseX and look for hints to index
>>  rewritings. In your specific query, I noticed that $qxml and $qxmldoc
>>  point to the same node. Moreover, you it helps to use "where" clauses
>>  as early as possible, so the first part of your query could possibly
>>  be rewritten to...
>>
>>    for $qxml in db:open('000999')
>>    where $qxml/*:Envelope/*:Header/*:RoutingInf/*:EnvelopeID/text() = $envs
>>    let $qdoc := ...
>>    return $qxml
>>
>>  Hope this helps,
>>  Christian
>>
>>  PS: As far as I can judge, your English is fine ;)
>>
>>  [1] http://docs.basex.org/wiki/Indexes
>>
>>>   So, why two queries to different databases complete in about 5 sec?
>>>   And if these queries make to one database - it takes a long time...
>>>
>>>>   by setting the PARALLEL option to 1
>>>   It helped a bit. Now the second script is waiting for finishing the first.
>>>   But I would like to see a parallel execution of these queries. Is it 
>>> possible without long waiting?
>>>   May be it is possible to load database (or some nodes) in memory to avoid 
>>> heavy load the disk?
>>>
>>>   23.05.2018, 22:54, "Christian Grün" <christian.gr...@gmail.com>:
>>>>   Hi Ветошкин (cc to the list),
>>>>
>>>>   Maybe we find a way to speed up your queries; you can attach them to
>>>>   your next mail.
>>>>
>>>>   I guess that the parallel query execution leads to "random access
>>>>   patterns" on disk. You can enforce one query at a time by setting the
>>>>   PARALLEL option to 1 (see [1]).
>>>>
>>>>   Hope this helps,
>>>>   Christian
>>>>
>>>>   [1] http://docs.basex.org/wiki/Options#PARALLEL
>>>>
>>>>   On Wed, May 23, 2018 at 9:40 PM, Ветошкин Владимир <en-tra...@yandex.ru> 
>>>> wrote:
>>>>>    Hi, Christian!
>>>>>
>>>>>    Thank you.
>>>>>
>>>>>    I have two scripts, which make queries to one database.
>>>>>    If I run these queries at different times, each of them completes in 
>>>>> about 5
>>>>>    sec.
>>>>>    But if I run both scripts at one time, it takes about 40 sec.
>>>>>
>>>>>    If the scripts make queries to different databases - it's ok, it takes 
>>>>> about
>>>>>    5 sec.
>>>>>
>>>>>    Is it possible to improve this situation?
>>>>>
>>>>>    I tried to use this code to load database in main-memory:
>>>>>    db:open('db1') update {}
>>>>>    But it didn't help.
>>>>>
>>>>>    I hope, you understand me :)
>>>>>
>>>>>    23.05.2018, 20:15, "Christian Grün" <christian.gr...@gmail.com>:
>>>>>
>>>>>    Привет Ветошкин,
>>>>>
>>>>>    Welcome to the list. Just send your question to this address.
>>>>>
>>>>>    Best,
>>>>>    Christian
>>>>>
>>>>>    Ветошкин Владимир <en-tra...@yandex.ru> schrieb am Mi., 23. Mai 2018, 
>>>>> 19:10:
>>>>>
>>>>>     Hello!
>>>>>
>>>>>     Sorry for my English.
>>>>>     May I ask you some questions here or I have to write them on github?
>>>>>
>>>>>     --
>>>>>     С уважением,
>>>>>      Ветошкин Владимир Владимирович
>>>>>
>>>>>    --
>>>>>    С уважением,
>>>>>    Ветошкин Владимир Владимирович
>>>
>>>   --
>>>   С уважением,
>>>    Ветошкин Владимир Владимирович
>
> --
> С уважением,
>  Ветошкин Владимир Владимирович

-- 
С уважением,
 Ветошкин Владимир Владимирович

Reply via email to