Hi Martin,
To eliminate the time to retrieve the result set do a 'sparql select count(*)
where ( ... ) ' , this would give us the time to execute query server side. The
rest is transmitting results to client, should see difference.
Best Regards,
Mitko
On Apr 22, 2010, at 7:24 PM, Martin Gerlach wrote:
> Hi Mitko,
>
> I executed the query many times with no notable improvement of response
> time.
>
> We are not using striped setup.
>
> I rebooted Virtuoso, checked the stats, ran the query and re-checked the
> stats. Onle the RDF_QUAD (primary key?) and RDF_QUAD_POGS indexes seem
> to be used, see below.
>
> Cheers,
> Martin
>
> --------------------
> AFTER SERVER RESTART
> --------------------
>
> SQL> select * from sys_d_stat where INDEX_NAME like 'RDF_QUAD%';
> KEY_TABLE
> INDEX_NAME
> TOUCHES READS READ_PCT N_DIRTY N_BUFFERS
> VARCHAR NOT NULL
> VARCHAR
> INTEGER INTEGER INTEGER INTEGER INTEGER
> _______________________________________________________________________________
>
> DB.DBA.RDF_QUAD
> RDF_QUAD
> 4505 612 13 0 612
> DB.DBA.RDF_QUAD
> RDF_QUAD_GS
> 0 0 0 0 0
> DB.DBA.RDF_QUAD
> RDF_QUAD_OP
> 0 0 0 0 0
> DB.DBA.RDF_QUAD
> RDF_QUAD_POGS
> 432 1657 382 0 1657
> DB.DBA.RDF_QUAD
> RDF_QUAD_SP
> 3634 3 0 0 3
>
>
> SQL> status();
> REPORT
> VARCHAR
> _______________________________________________________________________________
>
> OpenLink Virtuoso Server
> Version 06.01.3127-pthreads for Linux as of Apr 19 2010
> Started on: 2010/04/22 18:18 GMT+120
>
> Database Status:
> File size 6257901568, 763904 pages, 407986 free.
> 2621440 buffers, 2870 used, 0 dirty 0 wired down, repl age 0 0 w. io 0
> w/crsr.
> Disk Usage: 2945 reads avg 0 msec, 0% r 0% w last 0 s, 134 writes,
> 23 read ahead, batch = 97. Autocompact 0 in 0 out, 0% saved.
> Gate: 750 2nd in reads, 0 gate write waits, 0 in while read 0 busy scrap.
> Log = data/narysubproperty.trx, 87 bytes
> 355829 pages have been changed since last backup (in checkpoint state)
> Current backup timestamp: 0x0000-0x00-0x00
> Last backup date: unknown
> Clients: 1 connects, max 1 concurrent
> RPC: 4 calls, 1 pending, 1 max until now, 0 queued, 0 burst reads (0%),
> 0 second brk=21519429632
> Checkpoint Remap 38 pages, 0 mapped back. 0 s atomic time.
> DB master 763904 total 407986 free 38 remap 0 mapped back
> temp 256 total 251 free
>
> Lock Status: 0 deadlocks of which 0 2r1w, 0 waits,
> Currently 1 threads running 0 threads waiting 0 threads in vdb.
> Pending:
>
> Client 1111:1: Account: dba, 203 bytes in, 256 bytes out, 1 stmts.
> PID: 6680, OS: unix, Application: unknown, IP#: 127.0.0.1
> Transaction status: PENDING, 1 threads.
> Locks:
>
>
> Running Statements:
> Time (msec) Text
> 83 status()
>
>
> Replication Status: Server db-ALX-DEV03.
> db-ALX-DEV03 db-ALX-DEV03 0 OFF.
>
>
>
>
> Hash indexes
>
> -----
> QUERY
> -----
>
> SQL> sparql select ?conflict ?dateBegin where { ?conflict a
> <http://dbpedia.org/ontology/MilitaryConflict> ; ?p
> <http://dbpedia.org/ontology/Event> . ?p rdfs:subPropertyOf rdf:type ;
> <http://www.w3.org/2006/time#hasBeginning> ?dateBegin . };
>
> ...
> http://dbpedia.org/resource/Siege_of_Gezer
> 2007-08-26 18:33:33
> http://dbpedia.org/resource/Siege_of_Tripoli_%281821%29
> 1821-09-23 00:00:00
> http://dbpedia.org/resource/Submarine_Incident_off_Kildin_island
> 1992-02-11 00:00:00
> http://dbpedia.org/resource/The_1793_Battle_of_Hightower
> 1793-10-17 00:00:00
> http://dbpedia.org/resource/Second_Battle_of_Langensalza
> 1866-06-27 00:00:00
> http://dbpedia.org/resource/Siege_of_Messolonghi_%281822%29
> 1822-10-25 00:00:00
>
> 4250 Rows. -- 9450 msec.
>
> -----------
> AFTER QUERY
> -----------
>
> SQL> select * from sys_d_stat where INDEX_NAME like 'RDF_QUAD%';
> KEY_TABLE
> INDEX_NAME
> TOUCHES READS READ_PCT N_DIRTY N_BUFFERS
> VARCHAR NOT NULL
> VARCHAR
> INTEGER INTEGER INTEGER INTEGER INTEGER
> _______________________________________________________________________________
>
> DB.DBA.RDF_QUAD
> RDF_QUAD
> 17981 11245 62 0 11245
> DB.DBA.RDF_QUAD
> RDF_QUAD_GS
> 0 0 0 0 0
> DB.DBA.RDF_QUAD
> RDF_QUAD_OP
> 0 0 0 0 0
> DB.DBA.RDF_QUAD
> RDF_QUAD_POGS
> 3811901 30618 0 0 30618
> DB.DBA.RDF_QUAD
> RDF_QUAD_SP
> 3634 3 0 0 3
>
> SQL> status();
> REPORT
> VARCHAR
> _______________________________________________________________________________
>
> OpenLink Virtuoso Server
> Version 06.01.3127-pthreads for Linux as of Apr 19 2010
> Started on: 2010/04/22 18:12 GMT+120
>
> Database Status:
> File size 6257901568, 763904 pages, 408005 free.
> 2621440 buffers, 44669 used, 0 dirty 0 wired down, repl age 0 0 w. io
> 0 w/crsr.
> Disk Usage: 44744 reads avg 0 msec, 0% r 0% w last 0 s, 140 writes,
> 237 read ahead, batch = 179. Autocompact 0 in 0 out, 0% saved.
> Gate: 676 2nd in reads, 0 gate write waits, 0 in while read 0 busy scrap.
> Log = data/narysubproperty.trx, 87 bytes
> 355829 pages have been changed since last backup (in checkpoint state)
> Current backup timestamp: 0x0000-0x00-0x00
> Last backup date: unknown
> Clients: 1 connects, max 1 concurrent
> RPC: 52 calls, 1 pending, 1 max until now, 0 queued, 82 burst reads
> (157%), 0 second brk=21596606464
> Checkpoint Remap 19 pages, 0 mapped back. 0 s atomic time.
> DB master 763904 total 408005 free 19 remap 0 mapped back
> temp 256 total 251 free
>
> Lock Status: 0 deadlocks of which 0 2r1w, 0 waits,
> Currently 1 threads running 0 threads waiting 0 threads in vdb.
> Pending:
>
> Client 1111:1: Account: dba, 2171 bytes in, 357896 bytes out, 1 stmts.
> PID: 6619, OS: unix, Application: unknown, IP#: 127.0.0.1
> Transaction status: PENDING, 1 threads.
> Locks:
>
>
> Running Statements:
> Time (msec) Text
> 536 status()
>
>
> Replication Status: Server db-ALX-DEV03.
> db-ALX-DEV03 db-ALX-DEV03 0 OFF.
>
>
>
>
> Hash indexes
>
>
> 43 Rows. -- 86 msec.
>
>> Hi Martin,
>>
>> From the statistics i seem to me the db cache is not warmed, the disk
>> cache is cold as only couple of disk buffers are used. What happens
>> if you run query few more times ? you should see difference with
>> execution time, how is it compared agains first run. If still time
>> large, can check the disk status by :
>>
>> select top 20 * from sys_d_stat order by reads desc; This could
>> give some ideas which index is read so often.
>>
>> Another note: are you using striped setup re db files with separate
>> IO queues ? Also check FDsPerFile in INI , Parameters section, could
>> set it to 4 if you have many reads, but this should not affect one
>> query as all should be in memory .when executed few times
>>
>> Best Regards, Mitko
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Virtuoso-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
--
Mitko Iliev
Developer Virtuoso Team
OpenLink Software
http://www.openlinksw.com/virtuoso
Cross Platform Web Services Middleware