Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2e9c43658e374d290a2de15d25134ac8 > files > 547

db4o-doc-8.0-1.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="2" MadCap:lastHeight="120" MadCap:lastWidth="624" MadCap:disableMasterStylesheet="true" MadCap:tocPath="Basics Operations &amp; Concepts|Querying|Native Queries|Native Query Optimization" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Monitoring Optimization	</title>
        <script type="text/javascript">/* <![CDATA[ */
window.onload = function(){
	var pathToFlash = $('html').attr('MadCap:PathToHelpSystem') + 'Content/Resources/Code/ZeroClipboard.swf';
	ZeroClipboard.setMoviePath(pathToFlash);
			
	function bindToClipBord(element,content){
		var clip = new ZeroClipboard.Client();
		clip.setText(content);
		clip.glue(element);
	};
		
	if(location.protocol==='file:'){
		$('.copylink-marker').remove();
	} else{
			$('.copylink-marker').each(function(){
				var text = $(this).parent().parent().children('.prettyprint').html();
				$(this).hover(function(){
					bindToClipBord(this,text);
				},
				function(){});
			});	
	}		
	prettyPrint();	
};
                /* ]]> */</script>
        <link href="../../../../SkinSupport/MadCap.css" rel="stylesheet" />
        <link href="../../../../Resources/Stylesheets/OnlineStyle.css" rel="stylesheet" />
        <script src="../../../../Resources/Code/prettify.js">
        </script>
        <script src="../../../../Resources/Code/lang-vb.js">
        </script>
        <script src="../../../../Resources/Code/jquery.min.js">
        </script>
        <script src="../../../../Resources/Code/ZeroClipboard.js">
        </script>
        <script src="../../../../SkinSupport/MadCapAll.js" type="text/javascript">
        </script>
    </head>
    <body>
        <p class="MCWebHelpFramesetLink" style="display: none;"><a href="../../../../../index_CSH.html#basics/querying/native_queries/native_query_optimization/monitoring_optimization.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../../../basics.htm">Basics Operations &amp; Concepts</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../../../querying.htm">Querying</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../../native_queries.htm">Native Queries</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Monitoring Optimization</span>
        </div>
        <p>
            <script type="text/javascript">/*<![CDATA[*/document.write('<a href="' + location.href +'">');
				document.write("Direct Link");
			document.write('</a>');/*]]>*/</script>
        </p>
        <p>
        </p>
        <h1><a name="kanchor14"></a>Monitoring Optimization</h1>
        <p>In order to optimize native queries the <span class="PrimaryByteCode">bytecode</span> is analyzed and converted into <a href="../../soda_query.htm">SODA queries</a>.  This task isn't easy. If there's any doubt in the correctness of the conversion db4o won't do it. In such cases db4o falls back and instantiates all objects and runs it against the query. This is a order of magnitude slower than optimized queries. Therefore you probably want to monitor the query optimization and be warned when a query isn't optimized. This is possible with the <a href="../../../../tuning/diagnostics.htm">diagnostic listeners</a>.</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">configuration.Common.Diagnostic.AddListener(new NativeQueryListener());</pre>
            <div class="codesnippet-meta">NativeQueryDiagnostics.cs: Use diagnostics to find unoptimized queries
			<div class="codedownload"><a href="../../../../CodeExamples/query/nq/Example-query-nq-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">configuration.Common.Diagnostic.AddListener(New NativeQueryListener())</pre>
            <div class="codesnippet-meta">NativeQueryDiagnostics.vb: Use diagnostics to find unoptimized queries
			<div class="codedownload"><a href="../../../../CodeExamples/query/nq/Example-query-nq-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">class NativeQueryListener :IDiagnosticListener
{
    public void OnDiagnostic(IDiagnostic diagnostic)
    {
        if(diagnostic is NativeQueryNotOptimized){
            Console.WriteLine("Query not optimized"+diagnostic);
        } else if(diagnostic is NativeQueryOptimizerNotLoaded){
            Console.WriteLine("Missing native query optimisation assemblies" + diagnostic);
        }
    }
}</pre>
            <div class="codesnippet-meta">NativeQueryDiagnostics.cs: The native query listener
			<div class="codedownload"><a href="../../../../CodeExamples/query/nq/Example-query-nq-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Class NativeQueryListener
    Implements IDiagnosticListener
    Public Sub OnDiagnostic(ByVal diagnostic As IDiagnostic) Implements IDiagnosticListener.OnDiagnostic

        If TypeOf diagnostic Is NativeQueryNotOptimized Then
            Console.WriteLine("Query not optimized" &amp; Convert.ToString(diagnostic))
        ElseIf TypeOf diagnostic Is NativeQueryOptimizerNotLoaded Then
            Console.WriteLine("Missing native query optimisation assemblies" &amp; Convert.ToString(diagnostic))
        End If
    End Sub
End Class</pre>
            <div class="codesnippet-meta">NativeQueryDiagnostics.vb: The native query listener
			<div class="codedownload"><a href="../../../../CodeExamples/query/nq/Example-query-nq-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <p>You can register a diagnostic listener and check for certain messages. There are two messages related to the native query optimization. The first is the <strong>NativeQueryNotOptimized</strong>-message. This tells you that a query couldn't be optimized. Consider simplifying the query. The second is the <strong>NativeQueryOptimizerNotLoaded</strong>-message. This message tells you that db4o couldn't find the libraries needed for the native query optimization. Check that you've included the <span class="PrimaryArtefacts">assemblies</span>-files <a href="../../../../dependency_overview.htm">you need</a>. </p>
        <p>&#160;</p>
        <script type="text/javascript" src="../../../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>