Database-driven application designs can be fairly complex to understand and even harder to troubleshoot when not performing well. Tuning applications to take advantage of additional SQL database infrastructure is challenging and time consuming - keeping developers from the more valuable work of augmenting app functionality. In addition, with third-party apps, you have no access to the source code, making SQL database optimization impossible.
Due to its unique place in the network, ScaleArc has the ability to provide an unparalleled, in-depth view into an application’s behavior with its database stack and provide you with the tools needed to take corrective measures to alleviate performance bottlenecks.
App performance bottlenecks, as related to databases, tend to fall into three main categories.
- Poor query performance
- Lack of concurrent capacity to handle high user loads
- Connection pooling / management issues
ScaleArc provides you with the analytics tools to pinpoint when each of the above problems is occurring, in real time. With ScaleArc’s live monitoring, you can see how many database connections and queries your application is requesting and whether your database server/s are capable of handling the load.
Detailed analytics can also show you which application servers generate the most database load and what type of queries they execute - right down to query fingerprints with detailed, precise performance data that helps focus your attention on items that will yield the biggest performance improvements. Once you know what you need to fix, ScaleArc provides you the tools to implement the fixes immediately and review the improvements they've enabled. With ScaleArc’s analytics and monitoring, you can pinpoint application performance problems in minutes instead of hours.
ScaleArc provides application performance improvements in three key categories.
Query Response Caching
ScaleArc's tranparent in-memory query response caching lets you choose the exact read queries you wish to cache, along with a unique value for how long they should be cached. For example, you could cache static data such as a zip code lookup table for 24 hours, whereas other queries that may be a bit more time sensitive, such as the contents of an article in a CMS, could be cached for a lot shorter time - all the way down to 1 second.
ScaleArc provides a rich API to allow you to control what gets cached and to expire or evict items from the cache based on your application’s needs. ScaleArc’s cache is transaction safe: all transactions are executed start to end on the database server, without any caching so as to ensure ACID compliance.
Database Connection Pooling and Multiplexing
ScaleArc can significantly reduce the number of connections to your database servers by implementing connection pooling and multiplexing in a universal manner that provides much greater efficiencies than either client-based connection pooling or non-connection-pooled apps. ScaleArc also provides the ability to limit the number of connections to the database server to an optimal level for your configuration - and still handle any additional connection spikes from the clients by leveraging the efficient queueing technology built into ScaleArc’s load balancing system.
Dynamic Load Balancing
ScaleArc can dynamically load balance queries from your application across multiple database servers in a safe, consistent, and performance-oriented manner. ScaleArc performs automatic read-write split, which allows all writes and transactions to transparently flow to the primary or master server in a database cluster and load balances all read queries across all available read replicas or secondaries in a replication-aware manner. As a result, you can increase capacity within a cluster by adding more read replicas, enabling a very simple strategy for scale out.
ScaleArc provides an awesome combination of deep visibility and a single control point for all your database performance needs, so you can see what’s broken, fix it, and immediately see the effect of those improvements. This tight integration within the database and application ecosystem provides an unparalleled ability to find and resolve application performance issues.