Hi,

 

I’m currently setting up a prototype to store test log results in a XML DB and let users do reports with XQUERY.

I’m experiencing performance issues and am trying to identify where the bottleneck is.

The status:

-          I use a single database.

-          The computer is dedicated to the DB server. (all clients are on distant machines)

-          Each applications insert bursts of 100-400 xml nodes in each insert query. Between inserts there is a random delay. (seconds to minutes)

-          UPDINDEX=true

-          Autoflush is on

-          The delays start being unacceptable when CPU average reaches ~40% (on a dual core which means ~80% of a single CPU)

-          Disk i/o seems fine: iostat says write kB_wrtn/s is about 10% of max iorate supported by disk. (I also tried with an SSD with no better results)

-          After some trials, it seems the more nodes in the DB the more delays to insert. The delays seem proportional to the number of nodes in the DB.

-          The delays are also proportional to the number of inserter client application (it looks like the transaction monitor is responsible for this)

 

So I suppose the bottleneck is the CPU.

Is there a way to check where in Basex server the bottleneck is? Which functions crunch up all cpu?

How can I be sure basex uses both CPU?

Is there any chance to have multiple simultaneous write access in future versions?

 

Thank-you,

Best regards,

Gilles.

 

 

 

By the way, the output of ‘info database’:

[BaseX]: info database

Database Properties

Name: logs2

Size: 202 GB

Nodes: 81534781

Documents: 1

Binaries: 0

Timestamp: 24.08.2012 15:07:11

 

Resource Properties

Timestamp: 24.08.2012 15:07:10

Encoding: UTF-8

Whitespace Chopping: ON

 

Indexes

Up-to-date: false

Text Index: ON

Attribute Index: ON

Full-Text Index: OFF