Revision
7189
User
monty
Date
2011-11-12 09:21
<<toc>> 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. If you want to be part of developing any of these features, get [[http://kb.askmonty.org/v/about|an account]] and add your name after the feature you are interested in. You can also add new features to this list or to the [[worklog]]. == MariaDB 5.3 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) == MariaDB 5.5 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-size## variable sufficient or more granula control is needed? * 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) == Uncategorized Features which have not been categorized into the above categories. === OpenGIS compliance * 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. === GIS-Optimizer * optimize simple queries with Intersects(), Within, Distance()<X * add Distance_sphere() and the related optimization. === Online operations * 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 ** Roles * 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 * Replication filters, like <<code>>--replicate-do-db<</code>> and 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) ** Most important MWL#120 and MWL#133, for obtaining and applying events. ** Then a mechanism for prioritizing transactions. * 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 [[http://www.mysqlperformanceblog.com/2011/03/13/percona-server-and-xtrabackup-weekly-news-march-12th|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) === Optimizer * 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: * 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 === Aria * 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) === Other things * 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: ** show plugins soname ... (mwl#80) ** mutex/condition service (wl#83) ** duplicate plugin names (mwl#79) ** create a charset service (mwl#81)