Details
-
New Feature
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Won't Do
-
None
-
None
Description
If MaxScale is routing a write to an Xpand table (and only an Xpand table), there should be an options to bypass Server and write directly to the Xpand backend. This assumes there are server definitions for both MariaDB and backend Xpand instances.
Perhaps it can be thought of as a service comprised of two services. While the MariaDB service may use a read/write splitter to funnel writes to the primary, the Xpand service can load balance writes across all backend Xpand instances.
The top level services simply evaluates the query to determine whether or not it can route a write to the Xpand services. If not, it routes it to the MariaDB services.
This assumes MaxScale can get tables definitions and maintain metadata about the storage engine used by all tables.
The goal is to optimized write performance (throughput and latency) when writing data to Xpand tables (and only to Xpand tables).
Attachments
Issue Links
- is blocked by
-
MXS-3289 Make the use of different/multiple storage engines transparent to apps
-
- Closed
-
This should be doable, but basically it could only be applied when transactions are not used.
If most transactions would be known to target only xpand tables, then an optimistic approach could be used. When a transaction is started, MaxScale would always start it on xpand. If the transaction stays xpand "pure", then all is fine. If it does not, then MaxScale would abort the transaction on xpand, replay it on Server and provided the result of the replayed statements would be identical, MaxScale would send the non-xpand pure statement to Server and thereafter continue using it. Basically https://mariadb.com/kb/en/mariadb-maxscale-23-readwritesplit/#optimistic_trx would be reused for this purpose.