> On Wednesday, Nov 24, 2021 at 7:37 PM, Christopher Schultz 
> <ch...@christopherschultz.net (mailto:ch...@christopherschultz.net)> wrote:
> (on the significance of DBCP overall)
> It's essentially "failing faster" or, IMO, "failing safer."

All right, I think I see it now. A very good explanation, thank you.
> If I were you, I'd examine the reason behind your decision to use
> ProxySQL in the first place. Maybe it makes sense to use it, but maybe
> it makes sense to use what you already have, and not introduce a new
> component into the mix.
I just realized that an earlier reply of mine to Olaf Kock bounced for some 
reason and never made it to the list; it had the reasoning behind this. Here it 
is again:

Reason number 1: the read-write split.

The MySQL database has a LOT of legacy baggage in the form of ancient MyISAM 
tables, which are really prone to table-level locks. (Upgrading the tables to 
InnoDB to enable row-level locking is a long-term goal, but it has been tried 
before unsuccessfully, so it'll take much more time to do it right.) We're 
seeing these locks and resulting expensive outages with certain patterns of 
simultaneous read/write loads. We've created a replica server to which we'll be 
able to point nearly all of the read traffic, which should basically instantly 
solve this problem.

Reason number 2: better query statistics and the capability to act on them 
without downtime

At this point you'll likely not be surprised to hear that the Java application 
produces practically no useful log output. ProxySQL will help us to identify 
query-level bottlenecks, and in some cases we'll be able to use its other 
functionalities (e.g. query caching or query rewriting, and the ability to 
activate them on the fly) to work around problematic queries without having to 
touch Java code at all.

In both cases, the Java application is "the right place" to fix these issues 
(although the read-write split is a good idea for our environment in any case). 
But as complicated as the ProxySQL undertaking is, fixing the decades-old, 
poorly architected, monolithic legacy Java application with library versions 
EOL'd over a decade ago and tons of SQL queries that rely on old MySQL 
misfeatures would be far more time-consuming and sometimes difficult enough to 
the point of infeasibility.

Anyhow, thank you for your answers. They have been extremely helpful and will 
give us confidence to move forward without worrying too much about the two 
pools coexisting.

- JK

Reply via email to