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 > Virtuoso-users@lists.sourceforge.net > 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