Plans for 5.6
The information on this page is obsolete. Current information can be found on the Plans for 10x page.
Also see the following blog posts:
- MariaDB 5.3
- MariaDB 5.5
- MariaDB 5.6 Definite
- MariaDB 5.6 High Probability
- MariaDB 5.6 Rolling
- Will skip for 5.6
The following is a list of features considered for 5.6.
As soon as 5.3/5.5 is declared gamma we have to decode who will work on what features for 5.6. All features that has a designed developer who agrees to get the thing done in a given timeline will be considered as a 5.6 feature. Then we will also create a new kb page with the to-be-done features.
The items below that have a name after them are already allocated to a developer.
Features which will be in MariaDB 5.3 (instead of waiting until 5.6 to add them).
- Storage independent test suite (add to 5.3)
- OpenGIS: create required tables: GeometryColumns, related views. (Holyfoot) (move to 5.3)
- OpenGIS: stored procedure AddGeometryColumn (Holyfoot) (move to 5.3)
Features which will be in MariaDB 5.5 (instead of waiting until 5.6 to add them).
- Present in MySQL 5.5: Performance Schema
- what do we want to do with it, embrace it, extend it?
- or it is better to have more SHOW commands and INFORMATION_SCHEMA tables?
- are going to use Facebook's user stats/index stats patch or create a PERFORMANCE_SCHEMA-based solution? (MP + Percona)
- Not much we can do to improve it for 5.6
- FB request: log all SQL errors (Holyfoot to do in 5.5); MWL#177
- FB request: EXPLAIN the *actual* plan on a *running* statement; no progress indicators and numbers are needed; MWL#182 (In Progress) (spetrunia)
- Thread pool (Wlad) (5.5)
- Memory tables: VARCHAR and BLOB support (Have sponsor; Will be implemented for 5.5) (monty)
- Plugins by Sergey: INSTALL PLUGIN * (MWL#77) (done but not pushed) (will be in 5.5) (sergey)
- LGPL/BSD client library (MP) (done in 5.5)
- Need to build it outside the tree as a separate package that people can use
MariaDB 5.6 Definite
Features which will definitely be in MariaDB 5.6
- FB request: Better monitoring for replication (FB has patch; MP will add) (kristian) (for 5.5 or 5.6)
- Aria: Concurrent UPDATE & DELETE. MWL#235 (Have partial sponsor) (monty) (will do before April)
- Aria: Segmented key cache for Aria (igor) (definitely before 5.7)
- Aria: Fast next not same (monty) (will be done for 5.6)
- From MySQL 5.6: Global transaction ID, so the slave state becomes recoverable, and facilitate automatic moving a slave to a new master across multi-level hierarchies.
MariaDB 5.6 High Probability
Features which have a high probability of being in MariaDB 5.6
- Performance: More scalable query cache under higher concurrency (Sanja) (maybe)
- Allow stale data (Sanja) (maybe)
MariaDB 5.6 Rolling
Features which will be added when they are ready.
- Parameterized Views
- Percona patches (Monty & Sanja) (rolling feature)
Will skip for 5.6
Features which will not be added to MariaDB 5.6.
- Community Request: prevent full scans from running at all above a certain table size;
- is existing
max-join-sizevariable sufficient or more granula control is needed?
- is existing
- Optimizer: Implement UNION ALL without usage of a temporary table (nice to have) (wait for sponsor)
- Federated: Generic query pushdown
- Federated: Apply it to federated
- Federated: Timour's old list of tasks (Timour)
- Table functions (Timour) (after 5.6)
- Refactoring: do_select refactoring to remove if's and make each code group (like end_select) smaller (small speedup and cleaner code)
Features which have not been categorized into the above categories.
- OpenGIS: prefill the spatial_ref_sys table. (Holyfoot)
- OpenGIS: Add possible III-rd coordinate (Altitude). (Holyfoot)
- OpenGIS: Distance3D, related optimization.
- OpenGIS: Precise math coordinates instead of DOUBLE-s.
- optimize simple queries with Intersects(), Within, Distance()<X
- add Distance_sphere() and the related optimization.
- Extension to bigger datatype (var)char(n) (n+x)
- Online extension of any NUMERIC datatype ; Like ALTER tinyint -> smallint
- Extend ENUM done need more visibility
- Alter comment (Monty)
- Online Add and drop index (Drop is easy to implement MyISAM/ARIA)
- Online OPTIMIZE
- Online ANALYSE
- Add ALTER ONLINE TABLE (Done by Monty: Syntax added in 5.3; When ONLINE is used, one gets an error if the ALTER TABLE can't be done online)
- Look at patch for online backport sent to maria-developers
COMPATIBILITY & USABILITY
- Date & time embedded timezone (Need sponsor)
- IPV6 native type
- Functions ; Functions exists in public patch (MP)
- Datatype ;Old patch exists
- Extended timestamp > 2038
- 1M tables Information schema (MP will investigate)
- 1M users requirements
- mysql.* in any engine
- LOG tables in a log_schema schema
- User Ldap Authentification like Drizzle
- Make openssl hash functions available for user. (Bank will sponsor)
- Query logging and summary per query MWL#179
- Auditing for specific user (to general log)
- Flush and reload variables from my.cnf
- Replication filters, like
--replicate-do-dband friends, need to be possible to change dynamically, without having to restart the server. Having to stop the slave should ideally also not be needed, but is less of a problem.
- Transactional storage of slave state, rather than file-based master.info and relay-log.info . So the slave can recover consistently after a crash.
- Support in global transaction ID for master_pos_wait()
- Hooks around rotation of the binlog, so user can configure shell commands when a new log is started and when it is ended. The command must be run asynchroneously, and get the old and new log file name as arguments.
- Reduce fsyncs from 3 to 1 in group commit with binary log (MWL#164)
- Parallel applying of binary log in slave (MWL#169)
- Replication APIs, as per MWL#107 (Needs sponsor)
- Multi source (Slave can have multiple masters). MWL#201. There is a partial sponsorship for this already. (Monty and Kristian)
Statistics and monitoring
- Strategic direction: Enterprise monitoring
- graphing and data aggregation tools, server monitoring, etc.
- customer has reported that Merlin is inadequate, should we enter into this market? (MonYog, SkySQL, Percona, Oli Sennhauser, Open Query etc is doing tools)
- QA request: better EXPLAIN (HIGH priority; MP; Spetrunia)
- required in order to debug performance issues in queries without knowing the query or the data;
- the customer will only provide EXPLAIN and SHOW output, we need to debug based on that; (need examples)
- Perhaps optimizer trace is what we need
- QA request: engine independent PERSISTENT TABLE STATISTICS (Igor)
- required to ensure repeatable query execution for InnoDB;
- may allow various statistics to be reported by the server regardless of engine;
- able to simulate different sized tables
- U/C at Oracle: OPTIMIZER tracing
spetrunia: report actual estimates, and all decisions of the optimizer,
including why an index was *not* picked, etc.
- want to change for 5.7
- FB request: more options for controlling the slow query log MWL#181 (Holyfoot will check)
- sample one out of every N queries or transactions ; with N ~ 99 (Patch by FB; Will be changed to use AUDIT)
- idea: collect statistics per query text, or normalized query text and report;
- request by community: progress bar for SELECT;
- how to estimate the total running time of the query;
- Percona has support for this
- 5.3 has progress reporting for SHOW PROGRESS PROCESSLIST; SHOW QUERY PROGRESS; and LOAD DATA .
- FB request: limit total temptable size on the server (MP) MWL#183
- FB patch: Admission Control (MP) (seriously considered to be done) (wlad)
- limit number of concurrently running queries per user;
- if all user queries are blocked, allow a few more queries to join;
- Integration with log watching tools
- alter log formats to make them compatible with tools;
- include logwatch mysql-specific config file in packages/distributions;
a counter for the total number of bytes read by I/O thread that does not rotate on log rotation; "seconds behind real master" to report the actual time the slave I/O thread is behind (MP will look into this)
- FB patch: report the time spent in individual phases of query processing (MP)
- Put cost related constants into variables (will be done) (timour)
- Automatic tuning of cost constants for specific setup (SSD / TAPE)
- Make optimizer switch more user friendly (Sanja and Spetrunia) (will be done)
- Cost model cleanup (Don't assume things are B-trees) (timour)
- Consistent cost interface trough handler methods
- Persistent data statistics (Igor)
- Grace HASH join (Need sponsor)
- Sort merge join (Need sponsor)
- Better item_equal (Igor & Monty)
- missing item_equal for ORDER BY and GROUP BY
- Less fetches of data pages.
- can use whenever you have many-to-many relationships between two tables
- use to try to minimize data access
- it's like INDEX INTERSECTION
- Performance: Better multi CPU performance above 16 cores (Work with Intel)
- Performance: Predictive parser to replace yacc based ; 5 % speedup for simpler queries
- Performance: Faster WHERE (a,b) in ((1,2),(2,3)...huge list...) (customer request)
- Performance: Faster VIEW (Not open frm & parse query for every access); Speed up simple view handling 2x
- MIN/MAX indexes
- Index withing key pages to speed up lookup on compressed key pages.
User friendly features
- Better/safer upgrade (?)
- Better option files in distributions.
- UNIQUE CONSTRAINT for BLOB (MWL#139) (medium)
- Enhance RQG to test for query correctness and performance on production workloads during upgrade (MWL#178) (prototype done, need to get outside users to verify the code)
Plugins by Sergey
- Plugins by Sergey: query rewrite (MWL#144)
- Plugins by Sergey: full-text search engine plugin (MWL#143)
- Plugins by Sergey: Plugin Loader (MWL#162)
- Plugins by Sergey: smaller, nice to have, tasks: