Class ParallelEvaluationOptimiser
An Algebra Optimiser which looks for unions and joins that can be evaluated in parallel to improve query evaluation speed in some cases.
Inheritance
Implements
Inherited Members
Namespace: VDS.RDF.Query.Optimisation
Assembly: dotNetRdf.dll
Syntax
public class ParallelEvaluationOptimiser : IAlgebraOptimiser
Remarks
Using this feature allows you to use experimental parallel SPARQL evaluation optimisations which may improve query evaluation speed for some queries. A query must either use UNION or have joins which are disjoint in order for any parallel evaluation to take place.
Users should be aware that using this optimiser may actually increase evaluation speed in some cases e.g. where either side of a disjoint join will return empty especially when it is the left hand side that will do so.
Also note that while use of this optimiser should not cause queries to return incorrect results as it does not change the semantics of the evaluation as it only parallelises independent operators we cannot guarantee that all parallelised queries will return identical results to their non-parallelised counterparts. If you find a query that you believe is giving incorrect results when used with this optimiser please test without the optimiser enabled to check that the apparent incorrect result is not an artifact of this optimisation.
Properties
| Improve this Doc View SourceUnsafeOptimisation
Determines whether an Optimiser will perform algebra optimizations that are potentially unsafe at execution time.
Declaration
public bool UnsafeOptimisation { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
Remarks
Using this feature allows you to use experimental parallel SPARQL evaluation optimisations which may improve query evaluation speed for some queries. A query must either use UNION or have joins which are disjoint in order for any parallel evaluation to take place.
Users should be aware that using this optimiser may actually increase evaluation speed in some cases e.g. where either side of a disjoint join will return empty especially when it is the left hand side that will do so.
Also note that while use of this optimiser should not cause queries to return incorrect results as it does not change the semantics of the evaluation as it only parallelises independent operators we cannot guarantee that all parallelised queries will return identical results to their non-parallelised counterparts. If you find a query that you believe is giving incorrect results when used with this optimiser please test without the optimiser enabled to check that the apparent incorrect result is not an artifact of this optimisation.
Methods
| Improve this Doc View SourceIsApplicable(SparqlQuery)
Returns that the optimser is applicable to all queries.
Declaration
public bool IsApplicable(SparqlQuery q)
Parameters
Type | Name | Description |
---|---|---|
SparqlQuery | q | Query. |
Returns
Type | Description |
---|---|
System.Boolean |
Remarks
Using this feature allows you to use experimental parallel SPARQL evaluation optimisations which may improve query evaluation speed for some queries. A query must either use UNION or have joins which are disjoint in order for any parallel evaluation to take place.
Users should be aware that using this optimiser may actually increase evaluation speed in some cases e.g. where either side of a disjoint join will return empty especially when it is the left hand side that will do so.
Also note that while use of this optimiser should not cause queries to return incorrect results as it does not change the semantics of the evaluation as it only parallelises independent operators we cannot guarantee that all parallelised queries will return identical results to their non-parallelised counterparts. If you find a query that you believe is giving incorrect results when used with this optimiser please test without the optimiser enabled to check that the apparent incorrect result is not an artifact of this optimisation.
IsApplicable(SparqlUpdateCommandSet)
Returns that the optimiser is not applicable to updates.
Declaration
public bool IsApplicable(SparqlUpdateCommandSet cmds)
Parameters
Type | Name | Description |
---|---|---|
SparqlUpdateCommandSet | cmds | Updates. |
Returns
Type | Description |
---|---|
System.Boolean |
Remarks
Using this feature allows you to use experimental parallel SPARQL evaluation optimisations which may improve query evaluation speed for some queries. A query must either use UNION or have joins which are disjoint in order for any parallel evaluation to take place.
Users should be aware that using this optimiser may actually increase evaluation speed in some cases e.g. where either side of a disjoint join will return empty especially when it is the left hand side that will do so.
Also note that while use of this optimiser should not cause queries to return incorrect results as it does not change the semantics of the evaluation as it only parallelises independent operators we cannot guarantee that all parallelised queries will return identical results to their non-parallelised counterparts. If you find a query that you believe is giving incorrect results when used with this optimiser please test without the optimiser enabled to check that the apparent incorrect result is not an artifact of this optimisation.
Optimise(ISparqlAlgebra)
Declaration
public ISparqlAlgebra Optimise(ISparqlAlgebra algebra)
Parameters
Type | Name | Description |
---|---|---|
ISparqlAlgebra | algebra | Algebra. |
Returns
Type | Description |
---|---|
ISparqlAlgebra |
Remarks
Using this feature allows you to use experimental parallel SPARQL evaluation optimisations which may improve query evaluation speed for some queries. A query must either use UNION or have joins which are disjoint in order for any parallel evaluation to take place.
Users should be aware that using this optimiser may actually increase evaluation speed in some cases e.g. where either side of a disjoint join will return empty especially when it is the left hand side that will do so.
Also note that while use of this optimiser should not cause queries to return incorrect results as it does not change the semantics of the evaluation as it only parallelises independent operators we cannot guarantee that all parallelised queries will return identical results to their non-parallelised counterparts. If you find a query that you believe is giving incorrect results when used with this optimiser please test without the optimiser enabled to check that the apparent incorrect result is not an artifact of this optimisation.