Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EE333D4C0 for ; Tue, 2 Oct 2012 04:05:08 +0000 (UTC) Received: (qmail 32986 invoked by uid 500); 2 Oct 2012 04:05:08 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 32967 invoked by uid 500); 2 Oct 2012 04:05:07 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 32947 invoked by uid 99); 2 Oct 2012 04:05:07 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Oct 2012 04:05:07 +0000 Date: Tue, 2 Oct 2012 15:05:07 +1100 (NCT) From: "Mamta A. Satoor (JIRA)" To: derby-dev@db.apache.org Message-ID: <1433129733.153014.1349150707821.JavaMail.jiratomcat@arcas> Subject: [jira] [Updated] (DERBY-3024) Validation of shared plans hurts scalability MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-3024?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mamta A. Satoor updated DERBY-3024: ----------------------------------- Urgency: Normal Labels: derby_triage10_10 (was: ) > Validation of shared plans hurts scalability > -------------------------------------------- > > Key: DERBY-3024 > URL: https://issues.apache.org/jira/browse/DERBY-3024 > Project: Derby > Issue Type: Improvement > Components: SQL > Affects Versions: 10.4.1.3 > Environment: Sun Java SE 6, Solaris 10, Sun Fire V880 (8 CPUs) > Reporter: Knut Anders Hatlen > Priority: Minor > Labels: derby_triage10_10 > Attachments: patch-1a.diff, patch-1a.png, patch-2a.diff, patch-2a.png, values1.png, Values.java > > > To investigate whether there was anything in the SQL execution layer that prevented scaling on a multi-CPU machine, I wrote a multi-threaded test which continuously executed "VALUES 1" using a PreparedStatement. I ran the test on a machine with 8 CPUs and expected the throughput to be proportional to the number of concurrent clients up to 8 clients (the same as the number of CPUs). However, the throughput only had a small increase from 1 to 2 clients, and adding more clients did not increase the throughput. Looking at the test in a profiler, it seems like the threads are spending a lot of time waiting to enter synchronization blocks in GenericPreparedStatement.upToDate() and BaseActivation.checkStatementValidity() (both of which are synchronized on the a GenericPreparedStatement object). > I then changed the test slightly, appending a comment with a unique thread id to the "VALUES 1" statement. That means the threads still did the same work, but each thread got its own plan (GenericPreparedStatement object) since the statement cache didn't regard the SQL text strings as identical. When I made that change, the test scaled more or less perfectly up to 8 concurrent threads. > We should try to find a way to make the scalability the same regardless of whether or not the threads share the same plan. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira