<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DBA survival BLOG &#187; Portal</title>
	<atom:link href="http://www.ludovicocaldara.net/dba/tag/portal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ludovicocaldara.net/dba</link>
	<description>Keep DBA job simple. Thanks.</description>
	<lastBuildDate>Thu, 27 Aug 2009 13:58:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JBoss Portal and MySQL scalability: What The&#8230;???</title>
		<link>http://www.ludovicocaldara.net/dba/jboss-portal-and-mysql-scalability/</link>
		<comments>http://www.ludovicocaldara.net/dba/jboss-portal-and-mysql-scalability/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 22:06:33 +0000</pubDate>
		<dc:creator>Ludovico</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Portal]]></category>

		<guid isPermaLink="false">http://www.ludovicocaldara.net/dba/?p=33</guid>
		<description><![CDATA[I found several queries running on a MySQL 5.0 database like this one:

SELECT PATH, NAME FROM JBP_OBJECT_NODE  WHERE PK IN &#40;
SELECT NODE_KEY FROM JBP_OBJECT_NODE_SEC WHERE ROLE IN &#40;
SELECT jr.jbp_name FROM jbp_users ju, jbp_role_membership jrm,
jbp_roles jr
WHERE jrm.jbp_uid = ju.jbp_uid
AND jr.jbp_rid = jrm.jbp_rid
AND ju.jbp_uname = 'LUDOVICO'
AND ju.jbp_enabled = 1&#41;&#41;;

This query is related to JBoss Portal and does [...]]]></description>
			<content:encoded><![CDATA[<p>I found several queries running on a MySQL 5.0 database like this one:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> PATH<span style="color: #66cc66;">,</span> NAME <span style="color: #993333; font-weight: bold;">FROM</span> JBP_OBJECT_NODE  <span style="color: #993333; font-weight: bold;">WHERE</span> PK <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> NODE_KEY <span style="color: #993333; font-weight: bold;">FROM</span> JBP_OBJECT_NODE_SEC <span style="color: #993333; font-weight: bold;">WHERE</span> ROLE <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> jr<span style="color: #66cc66;">.</span>jbp_name <span style="color: #993333; font-weight: bold;">FROM</span> jbp_users ju<span style="color: #66cc66;">,</span> jbp_role_membership jrm<span style="color: #66cc66;">,</span>
jbp_roles jr
<span style="color: #993333; font-weight: bold;">WHERE</span> jrm<span style="color: #66cc66;">.</span>jbp_uid <span style="color: #66cc66;">=</span> ju<span style="color: #66cc66;">.</span>jbp_uid
<span style="color: #993333; font-weight: bold;">AND</span> jr<span style="color: #66cc66;">.</span>jbp_rid <span style="color: #66cc66;">=</span> jrm<span style="color: #66cc66;">.</span>jbp_rid
<span style="color: #993333; font-weight: bold;">AND</span> ju<span style="color: #66cc66;">.</span>jbp_uname <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'LUDOVICO'</span>
<span style="color: #993333; font-weight: bold;">AND</span> ju<span style="color: #66cc66;">.</span>jbp_enabled <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>This query is related to JBoss Portal and does a full scan on table JBP_OBJECT_NODE.</p>
<p>It has bad performances (&gt;0.8 sec) with just a few records:</p>
<p>mysql&gt; select count(*) from JBP_OBJECT_NODE;<br />
+&#8212;&#8212;&#8212;-+<br />
| count(*) |<br />
+&#8212;&#8212;&#8212;-+<br />
|    33461 |<br />
+&#8212;&#8212;&#8212;-+</p>
<p>If I rewrite the query using an inner join (à la Oracle, please forgive me) instead of a subquery I get an index scan:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">DISTINCT</span> a<span style="color: #66cc66;">.</span>PATH<span style="color: #66cc66;">,</span> a<span style="color: #66cc66;">.</span>NAME <span style="color: #808080; font-style: italic;">/* , b.NODE_KEY */</span> <span style="color: #993333; font-weight: bold;">FROM</span>  JBP_OBJECT_NODE
a<span style="color: #66cc66;">,</span> JBP_OBJECT_NODE_SEC b
<span style="color: #993333; font-weight: bold;">WHERE</span> a<span style="color: #66cc66;">.</span>pk<span style="color: #66cc66;">=</span>b<span style="color: #66cc66;">.</span>NODE_KEY
<span style="color: #993333; font-weight: bold;">AND</span> b<span style="color: #66cc66;">.</span>ROLE <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> jr<span style="color: #66cc66;">.</span>jbp_name <span style="color: #993333; font-weight: bold;">FROM</span> jbp_users ju<span style="color: #66cc66;">,</span> jbp_role_membership jrm<span style="color: #66cc66;">,</span>
jbp_roles jr
<span style="color: #993333; font-weight: bold;">WHERE</span> jrm<span style="color: #66cc66;">.</span>jbp_uid <span style="color: #66cc66;">=</span> ju<span style="color: #66cc66;">.</span>jbp_uid
<span style="color: #993333; font-weight: bold;">AND</span> jr<span style="color: #66cc66;">.</span>jbp_rid <span style="color: #66cc66;">=</span> jrm<span style="color: #66cc66;">.</span>jbp_rid
<span style="color: #993333; font-weight: bold;">AND</span> ju<span style="color: #66cc66;">.</span>jbp_uname <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'UTDEMO'</span>
<span style="color: #993333; font-weight: bold;">AND</span> ju<span style="color: #66cc66;">.</span>jbp_enabled <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>With 30k records the execution time falls down from 0.8 secs to 0.01 secs&#8230;<br />
That&#8217;s NOT all! I found this open bug:</p>
<p>https://jira.jboss.org/jira/browse/JBPORTAL-2040</p>
<p>With many users registered in, the JBoss Portal Admin console tooks over a minute to show a single page&#8230;</p>
<p>I don&#8217;t like portals&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludovicocaldara.net/dba/jboss-portal-and-mysql-scalability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
