Author: tolusha
Date: 2011-02-10 04:03:52 -0500 (Thu, 10 Feb 2011)
New Revision: 3957
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MySQLMultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLMultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLSingleDbJDBCConnection.java
Log:
EXOJCR-1104: optimize query for MySQL
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2011-02-09
17:49:16 UTC (rev 3956)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2011-02-10
09:03:52 UTC (rev 3957)
@@ -1028,7 +1028,9 @@
checkIfOpened();
try
{
+ long start = System.currentTimeMillis();
ResultSet resultSet = findNodesAndProperties(offset, limit);
+ System.out.println("end offset=" + offset + " time=" +
(System.currentTimeMillis() - start));
try
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MySQLMultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MySQLMultiDbJDBCConnection.java 2011-02-09
17:49:16 UTC (rev 3956)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MySQLMultiDbJDBCConnection.java 2011-02-10
09:03:52 UTC (rev 3957)
@@ -72,6 +72,21 @@
* {@inheritDoc}
*/
@Override
+ protected void prepareQueries() throws SQLException
+ {
+ super.prepareQueries();
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_MVALUE V, JCR_MITEM P
use index(JCR_IDX_MITEM_PARENT_ID)"
+ + " join (select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM from JCR_MITEM I"
+ + " where I.I_CLASS=1 order by I.ID LIMIT ? OFFSET ?) J on P.PARENT_ID =
J.ID"
+ + " where P.I_CLASS=2 and V.PROPERTY_ID=P.ID order by J.ID";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
protected int addNodeRecord(NodeData data) throws SQLException
{
// check if parent exists
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLMultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLMultiDbJDBCConnection.java 2011-02-09
17:49:16 UTC (rev 3956)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLMultiDbJDBCConnection.java 2011-02-10
09:03:52 UTC (rev 3957)
@@ -72,6 +72,21 @@
* {@inheritDoc}
*/
@Override
+ protected void prepareQueries() throws SQLException
+ {
+ super.prepareQueries();
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_MVALUE V, JCR_MITEM P
use index(JCR_IDX_MITEM_PARENT_ID)"
+ + " join (select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM from JCR_MITEM I"
+ + " where I.I_CLASS=1 order by I.ID LIMIT ? OFFSET ?) J on P.PARENT_ID =
J.ID"
+ + " where P.I_CLASS=2 and V.PROPERTY_ID=P.ID order by J.ID";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
protected int addNodeRecord(NodeData data) throws SQLException
{
// check if parent exists
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLSingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLSingleDbJDBCConnection.java 2011-02-09
17:49:16 UTC (rev 3956)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MySQLSingleDbJDBCConnection.java 2011-02-10
09:03:52 UTC (rev 3957)
@@ -72,6 +72,21 @@
* {@inheritDoc}
*/
@Override
+ protected void prepareQueries() throws SQLException
+ {
+ super.prepareQueries();
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_SVALUE V, JCR_SITEM P
use index(JCR_IDX_SITEM_PARENT_ID)"
+ + " join (select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM from JCR_SITEM I"
+ + " where I.CONTAINER_NAME=? AND I.I_CLASS=1 order by I.ID LIMIT ?
OFFSET ?) J on P.PARENT_ID = J.ID"
+ + " where P.I_CLASS=2 and P.CONTAINER_NAME=? and V.PROPERTY_ID=P.ID
order by J.ID";
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
protected int addNodeRecord(NodeData data) throws SQLException
{
// check if parent exists