From: Nicola V. <nic...@gm...> - 2013-10-11 12:04:31
|
Hi Hugh, thanks for the reply. Unfortunately I could't PROFILE any of the queries because both ended up with an "Error 22012: [Virtuoso Driver][Virtuoso Server]SR083: Division by zero". Any alternatives to do some profiling? Thanks, Nicola Il 11/10/2013 13:01, Hugh Williams ha scritto: > Hi Nicola, > > Can you please provide the output of running the profile() function for > these two queries ie replace explain with profile, which provides more > information on the query execution: > > http://docs.openlinksw.com/virtuoso/databaseadmsrv.html#readingqueryprofile > > There has not really been changes indexes but more in the query > optimiser were the plans may have changed which the explain and profile > outputs should help identify for your query ... > > Best Regards > Hugh Williams > Professional Services > OpenLink Software, Inc. // http://www.openlinksw.com/ > Weblog -- http://www.openlinksw.com/blogs/ > LinkedIn -- http://www.linkedin.com/company/openlink-software/ > Twitter -- http://twitter.com/OpenLink > Google+ -- http://plus.google.com/100570109519069333827/ > Facebook -- http://www.facebook.com/OpenLinkSoftware > Universal Data Access, Integration, and Management Technology Providers > > On 11 Oct 2013, at 09:52, Nicola Vitucci <nic...@gm... > <mailto:nic...@gm...>> wrote: > >> Hi all, >> >> I got a problem with Virtuoso 7.0.0 and I think it's related to the use >> of indices. My question is: have there been any big changes between the >> rc2 and the stable version, so that indices are not completely >> compatible across the two versions? >> >> Here is one of the queries I ran on both versions (just the names have >> been changed): >> >> PREFIX int: <namespace#> CONSTRUCT {?s int:new_prop ?n} WHERE {?s <prop> >> ?c . ?c rdfs:label ?n} >> >> and below you can find the result of EXPLAINing the query on the rc2 >> version first and then on 7.0.0. The query is reasonably fast on rc2 >> (41659 msec with ResultSetMaxRows = 10000), while it takes an awfully >> long time (1011741 msec, same ResultSetMaxRows) on 7.0.0. Other queries >> have a similar problem. >> >> Any ideas? >> >> Thank you, >> >> Nicola >> >> ------------------------ >> Virtuoso rc2 >> >> { >> >> Precode: >> 0: { >> s# 63 cluster outer seq start, set no <V $44 set_ctr in> >> save ctx:() >> >> Precode: >> 0: <V $27 vector x> := Call vector ( 1 , 0 , 3 , #new_prop , 1 >> , 1 ) >> 5: <V $29 vector x> := Call vector (<V $27 vector x>) >> 10: <V $31 vector x> := Call vector () >> 15: BReturn 0 >> s# 89 Fork 46 >> { >> s# 70 from DB.DBA.RDF_QUAD by RDF_QUAD 2.5e+05 rows >> Key RDF_QUAD ASC (<V $35 s_1_7_t1.O an>, <V $34 s_1_7_t1.S rn>) >> inlined P = #prop >> row specs: O LIKE <c T�> >> >> s# 77 from DB.DBA.RDF_QUAD by RDF_QUAD 1 rows >> Key RDF_QUAD ASC (<V $38 s_1_7_t2.O an>) >> inlined P = #label , S = <v $81 k_s_1_7_t1.O S83 rn> >> vector param casts: <V $35 s_1_7_t1.O an>-> <v $81 k_s_1_7_t1.O S83 rn> >> >> >> After code: >> 0: <V $40 __ro2lo x> := Call __ro2lo (<V $38 s_1_7_t2.O an>) >> 5: <V $42 vector x> := Call vector (<r $34 s_1_7_t1.S via S77 >> S83>, <V $40 __ro2lo x>) >> 10: if ($47 "user_aggr_notfirst" = 1 ) then 25 else 14 unkn 14 >> 14: $47 "user_aggr_notfirst" := := artm 1 >> 18: <V $49 user_aggr_ret x> := Call DB.DBA.SPARQL_CONSTRUCT_INIT >> ($48 "user_aggr_env") >> 25: <V $49 user_aggr_ret x> := Call DB.DBA.SPARQL_CONSTRUCT_ACC >> ($48 "user_aggr_env", <r $29 vector via S77 S83 S70>, <V $42 vector x>, >> <r $31 vector via S77 S83 S70>, 1 ) >> 32: BReturn 0 >> } >> s# 92 skip node 1 <none> <V $44 set_ctr in> >> >> After code: >> 0: <V $50 callret-0 x> := Call DB.DBA.SPARQL_CONSTRUCT_FIN ($48 >> "user_aggr_env") >> 7: BReturn 0 >> s# 96 Subquery Select(<V $50 callret-0 x>) >> set no: <r $44 set_ctr via S92> >> } >> >> 8: <none> := Call DB.DBA.RDF_DICT_OF_TRIPLES_TO_THREE_COLS ($100 >> "scalar") >> 15: BReturn 0 >> END Node >> } >> >> ------------------------ >> Virtuoso 7.0.0 >> >> { >> >> Precode: >> 0: { >> >> Precode: >> 0: vector := Call vector ( 1 , 0 , 3 , #new_prop , 1 , 1 ) >> 5: vector := Call vector (vector) >> 10: vector := Call vector () >> 15: BReturn 0 >> { fork >> RDF_QUAD 4.2e+08 rows(s_1_7_t2.S, s_1_7_t2.O) >> inlined P = #label >> >> Precode: >> 0: __ro2lo := Call __ro2lo (s_1_7_t2.O) >> 5: BReturn 0 >> RDF_QUAD_POGS 33 rows(s_1_7_t1.S) >> P = #prop , O = cast >> >> After code: >> 0: vector := Call vector (s_1_7_t1.S, __ro2lo) >> 5: if ($47 "user_aggr_notfirst" = 1 ) then 20 else 9 unkn 9 >> 9: $47 "user_aggr_notfirst" := := artm 1 >> 13: user_aggr_ret := Call DB.DBA.SPARQL_CONSTRUCT_INIT ($48 >> "user_aggr_env") >> 20: user_aggr_ret := Call DB.DBA.SPARQL_CONSTRUCT_ACC ($48 >> "user_aggr_env", vector, vector, vector, 1 ) >> 27: BReturn 0 >> } >> skip node 1 <none> set_ctr >> >> After code: >> 0: callret-0 := Call DB.DBA.SPARQL_CONSTRUCT_FIN ($48 >> "user_aggr_env") >> 7: BReturn 0 >> Subquery Select(callret-0) >> } >> >> 8: <none> := Call DB.DBA.RDF_DICT_OF_TRIPLES_TO_THREE_COLS ($100 >> "scalar") >> 15: BReturn 0 >> END Node >> } >> >> ------------------------------------------------------------------------------ >> October Webinars: Code for Performance >> Free Intel webinars can help you accelerate application performance. >> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the >> most from >> the latest Intel processors and coprocessors. See abstracts and register > >> http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk >> _______________________________________________ >> Virtuoso-users mailing list >> Vir...@li... >> https://lists.sourceforge.net/lists/listinfo/virtuoso-users > |