Author: mcbrown
Date: 2008-07-21 10:01:30 +0200 (Mon, 21 Jul 2008)
New Revision: 11292
Log:
Adding Maria
Added:
trunk/refman-6.0/se-maria.xml
Added: trunk/refman-6.0/se-maria.xml
===================================================================
--- trunk/refman-6.0/se-maria.xml (rev 0)
+++ trunk/refman-6.0/se-maria.xml 2008-07-21 08:01:30 UTC (rev 11292)
Changed blocks: 1, Lines Added: 1634, Lines Deleted: 0; 55108 bytes
@@ -0,0 +1,1634 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<section id="se-maria">
+
+ <title>The <literal>Maria</literal> Storage Engine</title>
+
+ <note><para>The <literal>Maria</literal> storage engine was introduced in MySQL 6.0.6.</para></note>
+
+ <para>
+ <literal>Maria</literal> is a crash safe version of
+ <literal>MyISAM</literal>. The <literal>Maria</literal> storage
+ engine supports all of the main functionality of the
+ <literal>MyISAM</literal> engine, but includes recovery support (in
+ the event of a system crash), full logging (including
+ <literal>CREATE</literal>, <literal>DROP</literal>,
+ <literal>RENAME</literal> and <literal>TRUNCATE</literal>
+ operations), all <literal>MyISAM</literal> row formats and a new
+ <literal>Maria</literal> specific row format.
+ </para>
+
+ <para>
+ For more information on known bugs and limitations in
+ <literal>Maria</literal>, see <xref linkend="se-maria-openbugs"/>
+ </para>
+
+ <para>
+ To create a <literal>Maria</literal> table you must specify the
+ engine when using the <literal>CREATE TABLE</literal> statement:
+ </para>
+
+<programlisting>mysql> CREATE TABLE maria_table (id int) ENGINE=Maria;</programlisting>
+
+ <para>
+ You can also use <literal>ALTER TABLE</literal> to convert an
+ existing table to the <literal>Maria</literal> engine:
+ </para>
+
+<programlisting>mysql> ALTER TABLE myisam_table ENGINE=Maria;</programlisting>
+
+ <para>
+ Data in <literal>Maria</literal> tables is stored in three files:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <filename>table.frm</filename> — the standard MySQL FRM
+ file containing the table definition.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>table.MAD</filename> — the
+ <literal>Maria</literal> data file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>table.MAI</filename> — the
+ <literal>Maria</literal> index file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, <literal>Maria</literal> creates at least two
+ additional files in your standard <option>datadir</option>
+ directory:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <filename>maria_log.????????</filename> — the
+ <literal>Maria</literal> log file. Each file is named
+ numerically and sequentially, with new files automatically
+ created when the log file limit has been reached. You can
+ control the log file size using
+ <link linkend="option_mysqld_maria_log_file_size"><option>maria_log_file_size</option></link>
+ option, and control the deletion of logs using
+ <link linkend="option_mysqld_maria_log_purge_type"><option>maria_log_purge_type</option></link>.
+ The newly create files stay in place until deleted, either
+ automatically or manually.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>maria_log_control</filename> — a control file
+ that holds information about the current state of the
+ <literal>Maria</literal> engine.
+ </para>
+
+ <warning>
+ <para>
+ You should not delete the
+ <filename>maria_log_control</filename> file from an active
+ <literal>Maria</literal> installation as it records
+ information about the current state of the
+ <literal>Maria</literal> engine, including information about
+ the log files and the default page block size used for the log
+ and data files.
+ </para>
+ </warning>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The basic functionality of <literal>Maria</literal> matches the
+ functionality of <literal>MyISAM</literal> with a number of
+ differences. These are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Two types of tables are supported. Non-crash safe tables
+ (non-transactional) are written immediately to their
+ corresponding data file. Transactional tables are crash safe and
+ data is written into the <literal>Maria</literal> log. For more
+ information on the log, see <xref linkend="se-maria-log"/>. Data
+ which had already been written to the log is then apply to the
+ data and index files as the statement completes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports auto-recovery in the event of
+ a crash. For more information, see
+ <xref linkend="se-maria-recovery"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports a single writer and multiple
+ readers. The writer supports both <literal>INSERT</literal> and
+ <literal>UPDATE</literal> operations. <literal>MyISAM</literal>
+ supports only concurrent <literal>INSERT</literal> and
+ <literal>SELECT</literal> statements. For more information, see
+ <xref linkend="se-maria-concurrency"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> provides a new row format,
+ <literal>PAGE</literal>. For more information, see
+ <xref linkend="se-maria-tableoptions"/>. Existing
+ <literal>MyISAM</literal> row formats are also supported on
+ non-transactional tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports crash-safe operations over
+ many statements by enclosing statements within <literal>LOCK
+ TABLES</literal> and <literal>UNLOCK TABLES</literal>
+ statements.
+ </para>
+
+ <note>
+ <para>
+ For future compatibility, you should use the
+ <literal>BEGIN</literal> and <literal>COMMIT</literal> syntax:
+ </para>
+
+<programlisting>
+BEGIN;
+LOCK TABLES ...;
+# statements
+UNLOCK TABLES;
+COMMIT;
+ </programlisting>
+
+ <para>
+ The <literal>LOCK</literal> and <literal>UNLOCK</literal>
+ statements will not be required in future.
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ <section id="se-maria-configuration">
+
+ <title><literal>Maria</literal> Configuration</title>
+
+ <para>
+ <literal>Maria</literal> supports a number of configuration
+ options to control the operation and performance of the storage
+ engine. Many of the options are similar to options that are
+ already available within the <literal>MyISAM</literal>
+ configuration options. See
+ <xref linkend="refman-5.1:myisam-storage-engine"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="option_mysqld_maria">
+ <literal>maria</literal> enables the <literal>Maria</literal>
+ plugin. You can disable <literal>Maria</literal> by using
+ <literal>--skip-maria</literal>.
+ </para>
+
+ <para>
+ Default is for the <literal>Maria</literal> plugin to be
+ enabled.
+ </para>
+
+ <note>
+ <para>
+ You cannot disable <literal>Maria</literal> if you have
+ enabled <literal>Maria</literal> as the default engine for
+ temporary tables using
+ <option>--with-maria-tmp-tables</option>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_block_size">
+ <literal>maria-block-size</literal>
+ </para>
+
+ <para>
+ Sets the block size to be used for <literal>Maria</literal>
+ index pages and data pages for the new <literal>PAGE</literal>
+ row format. Once the page size has been set the first time
+ <literal>mysqld</literal> has been run, you cannot change the
+ page size without recreating all your <literal>Maria</literal>
+ tables.
+ </para>
+
+ <note>
+ <para>
+ To change the block size of existing tables, you should use
+ <command>mysqldump</command> to save a copy of the table
+ data, stop <command>mysqld</command>, remove the
+ <filename>maria_log_control</filename> file and reconfigure
+ the block size before starting up <command>mysqld</command>
+ again.
+ </para>
+ </note>
+
+ <para>
+ The configuration setting of this value is recorded within the
+ <filename>maria_log_control</filename> file the first time
+ MySQL is started with the <literal>Maria</literal> engine
+ enabled.
+ </para>
+
+ <para>
+ The default size is 8192 (8KB).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_check_interval">
+ <literal>maria-check-interval</literal>
+ </para>
+
+ <para>
+ Sets the interval between automatic checkpoints. Checkpoints
+ in <literal>Maria</literal> synchronize the in-memory and
+ on-disk data and then collate information about the current
+ status of different transactions, before writing the
+ information about the current status to the
+ <literal>Maria</literal> log. The use of checkpoints improves
+ the ability and speed of <literal>Maria</literal> when
+ recovering from a crash, as recovery can continue from the
+ last stable checkpoint in the log, instead of replaying the
+ entire log.
+ </para>
+
+ <para>
+ The default checkpoint interval is 30 seconds. You can disable
+ checkpoints by setting the value to 0, but disabling
+ checkpoints will increase the time taken to recover in the
+ event of a failure. You should only set the value to 0 during
+ testing.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_dir_path">
+ <literal>maria_log_dir_path</literal>
+ </para>
+
+ <para>
+ Sets the path to the directory where the transactional log
+ files will be stored. You can set this to another device to
+ improve performance.
+ </para>
+
+ <para>
+ The default value is to use the same directory as the
+ <option>datadir</option> option.
+ </para>
+
+ <note>
+ <para>
+ This option is not available through a variable within
+ <command>mysqld</command>.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_file_size">
+ <literal>maria_log_file_size</literal>
+ </para>
+
+ <para>
+ Sets the size of each of the <literal>Maria</literal> log
+ files. When the log reaches this figure, a new log file (with
+ a new sequential log file number) is created, and the
+ <filename>maria_log_control</filename> file is updated.
+ </para>
+
+ <para>
+ The default size is 1GB. The minimum log file size is 8MB and
+ the maximum log file size is 4GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_purge_type">
+ <literal>maria_log_purge_type</literal>
+ </para>
+
+ <para>
+ Specifies how the transactional log will be purged. Supported
+ types are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>at_flush</literal> — the logs will be
+ removed (deleted from disk) only when they have been
+ marked 'free' (i.e. there are no pending transactions),
+ and a <literal>FLUSH LOGS</literal> statement has been
+ executed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>immediate</literal> — the logs are deleted
+ as soon as they no longer have pending transactions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>external</literal> — the logs are not
+ deleted automatically; it is assumed an external utility
+ is responsible for actually deleting the logs. This can be
+ used in combination with a backup solution to delete the
+ logs only once a backup has been completed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Default is <literal>immediate</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_max_sort_file_size">
+ <literal>maria_max_sort_file_size</literal>
+ </para>
+
+ <para>
+ Don't use the fast sort index method to create index id the
+ temporary file would get bigger than this size.
+ </para>
+
+ <para>
+ Default is the maximum file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_page_checksum">
+ <literal>maria_page_checksum</literal>
+ </para>
+
+ <para>
+ Sets the default mode for page checksums. If a table has page
+ checksums, then <literal>Maria</literal> will use the checksum
+ to ensure that the page information is not corrupted. You can
+ override page checksums on a table by table level by using the
+ <literal>PAGE_CHECKSUM</literal> or
+ <literal>CHECKSUM</literal> option during <literal>CREATE
+ TABLE</literal>.
+ </para>
+
+ <para>
+ Default is for <option>maria_page_checksum</option> to be
+ enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_age_threshold">
+ <literal>maria_pagecache_age_threshold</literal>
+ </para>
+
+ <para>
+ The number of hits that a hot block in the page cache has to
+ be untouched until it is considered old enough to be
+ downgraded to a warm block. Lower values cause demotion to
+ happen more quickly.
+ </para>
+
+ <para>
+ The default is 300.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_buffer_size">
+ <literal>maria_pagecache_buffer_size</literal>
+ </para>
+
+ <para>
+ Sets the size of the buffer used for data and index pages to
+ <literal>Maria</literal> tables. You should increase this
+ value to improve performance on data and index reads and
+ writes, ideally to the maximum figure supported by your
+ environment.
+ </para>
+
+ <para>
+ The default value is 8MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_division_limit">
+ <literal>maria_pagecache_division_limit</literal>
+ </para>
+
+ <para>
+ The minimum percentage of warm blocks in the page cache.
+ </para>
+
+ <para>
+ The default value is 100.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_repair_threads">
+ <literal>maria_repair_threads</literal>
+ </para>
+
+ <para>
+ Number of threads to be used when repairing
+ <literal>Maria</literal> tables when using <literal>REPAIR
+ TABLE</literal>. The default value of 1 disables parallel
+ repair.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_sort_buffer_size">
+ <literal>maria_sort_buffer_size</literal>
+ </para>
+
+ <para>
+ Sets the size of the buffer that is allocated when sorting the
+ index when doing a <literal>REPAIR</literal> or when creating
+ indexes using <literal>CREATE INDEX</literal> or
+ <literal>ALTER TABLE</literal>. Increasing this option will
+ improve the speed of the index creation process.
+ </para>
+
+ <para>
+ The default value is 8MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_stats_method">
+ <literal>maria_stats_method</literal>
+ </para>
+
+ <para>
+ Specifies how index statistics collection treats
+ <literal>NULL</literal> values. Valid choices are
+ <literal>nulls_unequal</literal>,
+ <literal>nulls_equal</literal>,
+ <literal>nulls_ignored</literal>.
+ </para>
+
+ <para>
+ The default setting is <literal>nulls_unequal</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_sync_log_dir">
+ <literal>maria_sync_log_dir</literal>
+ </para>
+
+ <para>
+ Controls the synchronization of the directory after log file
+ has been extended or a new log file has been created.
+ Supported values <literal>never</literal>,
+ <literal>newfile</literal> (only when a new log file is
+ created), and <literal>always</literal>.
+ </para>
+
+ <para>
+ The default setting is <literal>newfile</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-tableoptions">
+
+ <title><literal>Maria</literal> Table Options</title>
+
+ <para>
+ There are a number of options available when you create a new
+ <literal>Maria</literal> table:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>PAGE_CHECKSUM</literal>
+ </para>
+
+ <para>
+ The <literal>PAGE_CHECKSUM</literal> table option specifies
+ whether a page checksum for the table should be enabled. The
+ checksum can either be switched on (value 1) or off (value 0).
+ The default value of this option is implied by the
+ <option>maria_page_checksum</option> variable.
+ </para>
+
+ <para>
+ Because the default value of the
+ <literal>PAGE_CHECKSUM</literal> option is configurable, the
+ checksum setting is always included in the output of
+ <literal>SHOW CREATE TABLE</literal> if it was enabled when
+ the table was created.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>TRANSACTIONAL</literal>
+ </para>
+
+ <para>
+ <literal>Maria</literal> tables can be either transactional or
+ non-transactional. For <literal>Maria</literal> versions less
+ than 2.0, <literal>TRANSACTIONAL</literal> means crash-safe.
+ Full transaction support will only be available with
+ <literal>Maria</literal> 2.0 and later.
+ </para>
+
+ <para>
+ Changes to transactional tables are recorded in the
+ <literal>Maria</literal> log and use slightly more space per
+ row than non-transactional tables. By default all tables are
+ transactional (i.e. <literal>TRANSACTIONAL=1</literal> is
+ implied within the <literal>CREATE TABLE</literal> definition.
+ This means that the transactional status of the table is not
+ written in the output of the <literal>SHOW CREATE
+ TABLE</literal> output:
+ </para>
+
+<programlisting>mysql> create table maria_trans (id int, title char(20)) engine=Maria;
+Query OK, 0 rows affected (0.05 sec)
+
+mysql> SHOW CREATE TABLE maria_trans;
++-------------+---------------------------------------+
+| Table | Create Table |
++-------------+---------------------------------------+
+| maria_trans | CREATE TABLE `maria_trans` (
+ `id` int(11) DEFAULT NULL,
+ `title` char(20) DEFAULT NULL
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 |
++-------------+---------------------------------------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ If you create a non-crash safe (non-transactional) table then
+ the option is shown
+ </para>
+
+<programlisting>
+mysql> CREATE TABLE maria_nontrans (id INT, title CHAR(20)) ENGINE=Maria TRANSACTIONAL=0;
+Query OK, 0 rows affected (0.02 sec)
+
+mysql> SHOW CREATE TABLE maria_nontrans;
++----------------+----------------------------------------------------+
+| Table | Create Table |
++----------------+----------------------------------------------------+
+| maria_nontrans | CREATE TABLE `maria_nontrans` (
+ `id` int(11) DEFAULT NULL,
+ `title` char(20) DEFAULT NULL
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0 |
++----------------+----------------------------------------------------+
+1 row in set (0.00 sec)
+</programlisting>
+
+ <para>
+ Currently, transactional tables cannot handle
+ <literal>SPATIAL</literal> or <literal>FULLTEXT</literal>
+ indexes. You must use a non-transactional table if you want to
+ use these index key types. If you try to create a table with
+ these options, then an error will occur during <literal>CREATE
+ TABLE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>TABLE_CHECKSUM</literal>, <literal>CHECKSUM</literal>
+ </para>
+
+ <para>
+ Forces MySQL to maintain a live checksum for all rows in the
+ table. This maintains a rolling checksum (i.e. one that
+ changes when the table data changes), and can be used to
+ identify corrupted tables. This is identical to the
+ <literal>CHECKSUM</literal> on <literal>MyISAM</literal>
+ tables.
+ </para>
+
+ <para>
+ The <literal>CHECKSUM TABLE</literal> statement, which returns
+ the checksum for a given table, ignores record's attributes
+ which have a <literal>NULL</literal> value. This is different
+ behavior from standard MySQL 5.1.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, <literal>Maria</literal> supports the following row
+ formats:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>FIXED</literal> — identical to the
+ <literal>FIXED</literal> row format used by
+ <literal>MyISAM</literal>. Must be used with non-transactional
+ tables (i.e. where <literal>TRANSACTIONAL=0</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DYNAMIC</literal> — identical to the
+ <literal>DYNAMIC</literal> row format used by
+ <literal>MyISAM</literal>. Must be used with non-transactional
+ tables (i.e. where <literal>TRANSACTIONAL=0</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>PAGE</literal> — new <literal>Maria</literal>
+ row format where data and index information is written into
+ pages. The <literal>PAGE</literal> option can be used with
+ <literal>TRANSACTIONAL=0</literal> or
+ <literal>TRANSACTIONAL=1</literal>. The
+ <literal>PAGE</literal> format uses a different caching
+ mechanism than <literal>MyISAM</literal>. For more
+ information, see <xref linkend="se-maria-configuration"/>.
+ </para>
+
+ <para>
+ <literal>Maria</literal> data pages in <literal>PAGE</literal>
+ format has an overhead of 10 byte/page and 5 byte/rows.
+ Transaction and multiple concurrent writer support will use an
+ additional overhead of 7 bytes for new rows, 14 bytes for
+ deleted rows and 0 bytes for old compacted rows.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-log">
+
+ <title><literal>Maria</literal> Transaction Log</title>
+
+ <para>
+ The transaction log within <literal>Maria</literal> keeps a record
+ of all changes, including DDL, to tables created using the
+ <literal>TRANSACTIONAL</literal> table option. Events from all
+ tables and all databases are written into a single log file
+ sequence. The <literal>Maria</literal> log consists of one log
+ control file (<filename>maria_log_control</filename>) and one or
+ more maria log files (named
+ <filename>maria_log.????????</filename>, where
+ <literal>????????</literal> is an eight-digit number with a
+ maximum value of 16777215). The log control file and log file are
+ created automatically when <command>mysqld</command> is started.
+ </para>
+
+ <para>
+ The log contains a copy of all the data and that log can be used
+ to replay and verify the contents of the data files in the event
+ of a crash. Data written into the log is checkpointed at
+ configurable intervals to ensure that data and index files and log
+ data is synchronized. The default checkpoint interval is 30
+ seconds.
+ </para>
+
+ <para>
+ For tables using the transactional format, statements that change
+ data (DML statements) are recorded in the log file and these
+ changes are also ultimately written to the data and index files. .
+ There is no fixed point when the application of data written to
+ the log is also written to the data and index files. The process
+ happens continuously in the background during normal execution.
+ Although the data and index files and the transaction log may be
+ out of sync, all of the information is always available. In the
+ event of a crash, the recovery process will replay and apply the
+ contents of the log to bring the data and log files back into
+ synchronization.
+ </para>
+
+ <para>
+ Additional log files are created when the log file reaches the
+ configured maximum size (as controlled by
+ <literal>maria_log_file_size</literal>). The default value is 1GB.
+ This option can be controlled as a global variable and set with
+ the configuration file or on the command line.
+ </para>
+
+ <para>
+ You can determine the list of current log files using the
+ statement <literal>SHOW ENGINE MARIA LOGS</literal>:
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+----------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+----------+
+| maria | Size 191627264 ; /usr/local/mysql/var/maria_log.00000009 | unknown |
++--------+-------------------------------------------------------------+----------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ The <literal>Status</literal> shows the current status of the log
+ file:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>unknown</literal> — no checkpoint has taken
+ place, so the current status of the log file is unknown.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>in-use</literal> — information is still being
+ written to or read from the log, or outstanding statements are
+ still active that have information active within the log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>free</literal> — the log file and any
+ statements related to it have been completed and safely
+ committed to disk, and the log file is no longer active.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Any other message indicates an error in reading the log file
+ information.
+ </para>
+
+ <para>
+ New log files are created automatically as the size of the log
+ events reaches the configured size. For example, shown below are
+ the log files after a statement that inserted a large volume of
+ data was executed after the <literal>maria_log_file_size</literal>
+ variable has been reduced to 8MB (the minimum supported value):
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 191627264 ; /usr/local/mysql/var/maria_log.00000009 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000010 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000011 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000012 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000013 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000014 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000015 | in use |
+| maria | Size 139264 ; /usr/local/mysql/var/maria_log.00000016 | in use |
++--------+-------------------------------------------------------------+---------+
+8 rows in set (0.00 sec)
+</programlisting>
+
+ <para>
+ Log files that no longer have transactions or outstanding events
+ where the data has been safely committed on disk are marked
+ 'free':
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000002 | free |
+| maria | Size 2170880 ; /usr/local/mysql/var/maria_log.00000003 | in use |
++--------+-------------------------------------------------------------+---------+
+2 rows in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ Log files are deleted according to the setting of the
+ <literal>maria_log_purge_type</literal> dynamic variable. Three
+ options are supported, <literal>immediate</literal>,
+ <literal>external</literal> and <literal>at_flush</literal>.
+ </para>
+
+ <para>
+ In <literal>immediate</literal> mode, the log files are deleted as
+ soon as they no longer have outstanding transactions or events.
+ This reduces the disk space used by these logs, but means that the
+ logs cannot be transferred to another machine for replaying. This
+ setting should not affect recovery functionality, as only logs
+ where there is no outstanding data to be committed are deleted.
+ </para>
+
+ <para>
+ In <literal>at_flush</literal> mode, the log files are only
+ deleted when you execute the <literal>FLUSH LOGS</literal>
+ statement. Issuing this statement will delete the logs that have
+ the 'free' status, and therefore will not affect logs with
+ outstanding transactions or events.
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000002 | free |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000003 | free |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000004 | free |
+| maria | Size 4325376 ; /usr/local/mysql/var/maria_log.00000005 | in use |
++--------+-------------------------------------------------------------+---------+
+4 rows in set (0.00 sec)
+
+mysql> FLUSH LOGS;
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 4325376 ; /usr/local/mysql/var/maria_log.00000005 | in use |
++--------+-------------------------------------------------------------+---------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ When <literal>maria_log_purge_type</literal> is set to
+ <literal>external</literal>, log files are not deleted by MySQL at
+ all. Instead, it is assumed that an external process is
+ responsible for deleting log files. Care should be taken with this
+ setting as you should only delete log files that
+ <literal>Maria</literal> is no longer using.
+ </para>
+
+ <para>
+ Transaction log file events can be viewed using the
+ <command>maria_read_log</command> command, which also provides the
+ ability to replay log file contents and apply them to tables
+ without running <command>mysqld</command>. For more information,
+ see <xref linkend="se-maria-tools"/>.
+ </para>
+
+ </section>
+
+ <section id="se-maria-recovery">
+
+ <title><literal>Maria</literal> Recovery</title>
+
+ <para>
+ Any change (creation, insertion, deletion, update, etc.) in a
+ <literal>Maria</literal> table using the transactional format is
+ automatically written to the <literal>Maria</literal> log. Changes
+ to non-transactional tables are not written to the log.
+ </para>
+
+ <para>
+ The basic operation of the recovery process is in two main stages:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Replay the contents of the log and update the data and index
+ information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Roll back any statements that had not completed, or where the
+ transactions not been not been committed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ More specifically, in the event of a crash or other failure of
+ <command>mysqld</command>, the following takes place during the
+ next invocation of <command>mysqld</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Events in the log are replayed from the last checkpoint.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a checkpoint is not available (for example, if the log file
+ was newly created and no checkpoint was written when the crash
+ occurred), then all events are replayed from the start of the
+ log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For each active connection, events are replayed until the last
+ statement that completed before the crash occured, unless the
+ statement was executed after a <literal>LOCK TABLES</literal>
+ statement, in which case recovery takes place to the last
+ statement executed before the <literal>LOCK TABLES</literal>
+ statement was issued.
+ </para>
+
+ <para>
+ Because multiple connections can be active at the same time,
+ recovery takes for each connection individually.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ During recovery, if a statement fails due to a unique key
+ violation, then the entire statement is not rolled back. Only
+ the data that would have triggered the unique key violation is
+ rolled back. For example, if you had executed the following
+ statements into a table with a unique key:
+ </para>
+
+<programlisting>INSERT VALUES (1);
+INSERT VALUES (2),(1)</programlisting>
+
+ <para>
+ The second statement would generate a unique key violation,
+ but during recovery the statement would not be rolled back.
+ The table would still contain two rows containing the first
+ two values.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can see a sample of the recovery process after a crash below:
+ </para>
+
+<programlisting>080111 16:42:05 mysqld_safe Number of processes running now: 0
+080111 16:42:05 mysqld_safe mysqld restarted
+080111 16:42:05 [Note] mysqld: Maria engine: starting recovery
+recovered pages: 0% 99% 100% (0.9 seconds); transactions to roll back: 1 0 (3.8 seconds); tables to flush: 1 0 (0.5 seconds);
+080111 16:42:10 [Note] mysqld: Maria engine: recovery done
+080111 16:42:10 [Note] Event Scheduler: Loaded 0 events
+080111 16:42:10 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
+ </programlisting>
+
+ <para>
+ Recovery is automatic, but the length of time for recovery
+ increases in line with the number of incomplete statements and
+ tables known to be out of synchornization with the log. The
+ recovery process is single-threaded and cannot be configured.
+ </para>
+
+ </section>
+
+ <section id="se-maria-concurrency">
+
+ <title><literal>Maria</literal> Statement Concurrency</title>
+
+ <para>
+ The concurrency of statement execution on tables is handled
+ differently in <literal>Maria</literal> depending on whether you
+ are using non-transactional or transactional tables.
+ </para>
+
+ <para>
+ For non-transactional tables, the rules are identical to MyISAM:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>SELECT</literal>
+ </para>
+
+ <para>
+ All issued <literal>SELECT</literal>'s are running
+ concurrently. While a <literal>SELECT</literal> is running,
+ all writers (<literal>INSERT</literal>,
+ <literal>DELETE</literal>, <literal>UPDATE</literal>) are
+ blocked from using any of the used tables (i.e., they wait for
+ the table to be free before continuing) . The only exception
+ is that one <literal>INSERT CONCURRENT</literal> can be run on
+ each table that doesn't have any deleted rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>UPDATE</literal>
+ </para>
+
+ <para>
+ Only one <literal>UPDATE</literal> statement can run at the
+ same time on each table. While the <literal>UPDATE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DELETE</literal>
+ </para>
+
+ <para>
+ Only one <literal>DELETE</literal> statement can run at the
+ same time on each table. While the <literal>DELETE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ If <literal>INSERT CONCURRENT</literal> is used, and there are
+ no deleted rows in the table, only one <literal>INSERT
+ CONCURRENT</literal> statement can run at the same time on
+ each table. While the <literal>INSERT CONCURRENT</literal> is
+ running all other writer threads are blocked for using this
+ table. Any number of <literal>SELECT</literal> statements can
+ use this table.
+ </para>
+
+ <para>
+ If normal <literal>INSERT</literal> is used or if there are
+ deleted rows in the table, only one INSERT statement can run
+ at the same time on the table. While the
+ <literal>INSERT</literal> is running all
+ <literal>SELECT</literal>, <literal>INSERT</literal>,
+ <literal>DELETE</literal> and <literal>UPDATE</literal> are
+ blocked from using this table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CREATE</literal> or <literal>DROP</literal>
+ </para>
+
+ <para>
+ <literal>CREATE</literal>'s on different tables can be run
+ concurrently. On the same table, first creator wins.
+ <literal>DROP</literal> waits until all statements using the
+ tables are completed, after which the table is dropped.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ When using transactional tables:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>SELECT</literal>
+ </para>
+
+ <para>
+ All issued <literal>SELECT</literal>'s are running
+ concurrently. While a <literal>SELECT</literal> is running,
+ all writers (<literal>INSERT</literal>,
+ <literal>DELETE</literal>, <literal>UPDATE</literal>) are
+ blocked from using any of the used tables (ie, they wait for
+ the table to be free before continuing).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>UPDATE</literal>
+ </para>
+
+ <para>
+ Only one <literal>UPDATE</literal> statement can run at the
+ same time on each table. While the <literal>UPDATE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DELETE</literal>
+ </para>
+
+ <para>
+ Only one <literal>DELETE</literal> statement can run at the
+ same time on each table. While the <literal>DELETE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ Only one <literal>INSERT</literal> statement can run at the
+ same time on the table. While the <literal>INSERT</literal> is
+ running all <literal>SELECT</literal>,
+ <literal>INSERT</literal>, <literal>DELETE</literal> and
+ <literal>UPDATE</literal> are blocked from using this table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CREATE</literal> or <literal>DROP</literal>
+ </para>
+
+ <para>
+ <literal>CREATE</literal>'s on different tables can be run
+ concurrently. On the same table, first creator wins.
+ <literal>DROP</literal> waits until all statements using the
+ tables are completed, after which the table is dropped.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-designnotes">
+
+ <title><literal>Maria</literal> Design Notes</title>
+
+ <para>
+ <literal>Maria</literal> supports all aspects of
+ <literal>MyISAM</literal>, except as noted below. This includes
+ external and internal check/repair/compressing of rows, different
+ row formats, different index compress formats, maria_check etc.
+ After a normal shutdown one can copy <literal>Maria</literal>
+ files between servers.
+ </para>
+
+ <para>
+ <emphasis role="bold">Advantages of <literal>Maria</literal>
+ (Compared to <literal>MyISAM</literal>) </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Data and indexes are crash safe. On crash, things will
+ rollback to state of the start of statement or last
+ <literal>LOCK TABLES</literal> commands.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> can replay everything from the log.
+ Including
+ <literal>CREATE</literal>/<literal>DROP</literal>/<literal>RENAME</literal>/<literal>TRUNCATE</literal>
+ tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>LOAD INDEX</literal> can skip index blocks for not
+ wanted indexes
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Supports all <literal>MyISAM</literal> row formats and the new
+ transactional format where data is stored in pages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using transactional format (default) row data can be
+ cached.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has unit tests of most parts
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Supports both crash safe (soon to be transactional) and not
+ transactional tables. (Not transactional tables are not logged
+ and rows uses less space). <literal>CREATE TABLE foo (...)
+ TRANSACTIONAL=0|1</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Transactional is the only crashsafe/transactional row format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Block format should give a notable speed improvement on
+ systems with bad data caching (for example Windows).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Differences between <literal>Maria</literal>
+ and <literal>MyISAM</literal> </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> uses big (1GB by default) log files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has a log control file
+ (<filename>maria_log_control</filename>) and log files (
+ <filename>maria_log.????????</filename>). The log files can be
+ automatically purged when not needed or purged on demand
+ (after backup).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> uses by default 8K pages for indexes
+ (<literal>MyISAM</literal> 1K). <literal>Maria</literal>
+ should be faster on static size indexes but slower on variable
+ length keys (until we add a directory to index pages).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Disadvantages of <literal>Maria</literal>
+ (compared to <literal>MyISAM</literal>), that will be fixed in
+ forthcoming releases </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> 1.0 has one writer or many readers.
+ (<literal>MyISAM</literal> can have one inserter and many
+ readers when using concurrent inserts).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Storage of very small rows (< 25 bytes) is not efficient
+ for <literal>PAGE</literal> format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In <literal>Maria</literal> <literal>PAGE</literal> format
+ there is an overhead of 10 byte/page and 5 byte/rows.
+ Transaction and multiple concurrent writer support will use an
+ additional overhead of 7 bytes for new rows, 14 bytes for
+ deleted rows and 0 bytes for old compacted rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> doesn't support <literal>INSERT
+ DELAYED</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>maria_page_buffer_size</literal> system variable
+ that controls the <literal>Maria</literal> page cache size is
+ not dynamically settable like the corresponding
+ <literal>MyISAM</literal> variable,
+ <literal>key_buffer_size</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Differences that are not likely to be
+ fixed</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ No external locking (<literal>MyISAM</literal> has external
+ locking, but it is not much used).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has one page size for both index and
+ data (defined when <literal>Maria</literal> is used first
+ time). <literal>MyISAM</literal> supports different page sizes
+ per index.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Index requires one extra byte per index page.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> doesn't support RAID (disabled in
+ <literal>MyISAM</literal> too).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Minimum data file size for <literal>PAGE</literal> format is
+ 16K (with 8K pages).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-tools">
+
+ <title><literal>Maria</literal> Command-line Tools</title>
+
+ <para>
+ <literal>Maria</literal> supports a number of command-line tools
+ which operate in a similar fashion to the corresponding
+ <literal>MyISAM</literal> tools. These are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>maria_chk</command> — checks
+ <literal>Maria</literal> tables for corruption. Similar to the
+ <command>myisamchk</command> command; see
+ <xref linkend="myisamchk"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_ftdump</command> — dumps information
+ about fulltext indexes in <literal>Maria</literal> tables.
+ Similar to the <command>myisam_ftdump</command> command; see
+ <xref linkend="myisam-ftdump"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_pack</command> — packs a
+ <literal>Maria</literal> table to save space. Similar to the
+ <command>myisampack</command> command; see
+ <xref linkend="myisampack"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_read_log</command> — displays the
+ contents of a <literal>Maria</literal> log file or applies the
+ contents to existing tables. This tool is a utility for the
+ log files but is not used or required for recovery of data
+ from the log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_dump_log</command> — used for
+ interpreting log content for people who understand maria
+ transaction log internals.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+<!--
+
+
+<section id="se-maria-faq">
+ <title><literal>Maria</literal> Frequently Asked Questions (FAQ)</title>
+
+</section>
+ -->
+
+ <section id="se-maria-openbugs">
+
+ <title><literal>Maria</literal> Open Bugs</title>
+
+ <para>
+ This section contains all known fatal bugs in the
+ <literal>Maria</literal> storage engine for the last source or
+ binary release. Minor bugs, extensions and feature requests and
+ bugs, found since this release can be found in the MySQL bugs
+ databases at:
+ <ulink url="http://bugs.mysql.com/">http://bugs.mysql.com/</ulink>.
+ When reporting a bug, make sure you select the
+ <literal>Maria</literal> category for the bug.
+ </para>
+
+ <note>
+ <para>
+ You can find additional information in the
+ <filename>KNOWN_BUGS.txt</filename> file within the
+ <literal>Maria</literal> repository.
+ </para>
+ </note>
+
+ <para>
+ There shouldn't normally be any bugs that affect normal operations
+ in any <literal>Maria</literal> release. Still, there are always
+ exceptions and edge cases and that's what this section is for.
+ </para>
+
+ <para>
+ If you have found a bug that is not listed here, please add it to
+ <ulink url="http://bugs.mysql.com/">http://bugs.mysql.com/</ulink>
+ so that we can either fix it for next release or in the worst case
+ add it here for others to know! When reporting a bug, make sure
+ you select the <literal>Maria</literal> category for the bug.
+ </para>
+
+ <para>
+ <emphasis role="bold">Known bugs that are planned to be fixed
+ before next minor release</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If the log files are damaged or inconsistent,
+ <literal>Maria</literal> may fail to start. We should fix that
+ if this happens and mysqld is restarted (thanks to
+ mysqld_safe, instance manager or other script) it should
+ disregard the old logs, start anyway and automatically repair
+ any tables that were found to be crashed on open.
+ </para>
+
+ <para>
+ Temporary fix is to remove <filename>
+ maria_log.????????</filename> files from the data directory,
+ restart <command>mysqld</command> and run <literal>CHECK
+ TABLE</literal>/<literal>REPAIR TABLE</literal> or
+ <command>mysqlcheck</command> on your <literal>Maria</literal>
+ tables.
+ </para>
+
+ <warning>
+ <para>
+ Do not remove the <filename>maria_log_control</filename>
+ file, as this contains the page size information required
+ for reading <literal>Maria</literal> log and data files.
+ </para>
+ </warning>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Known bugs that are planned to be fixed
+ before Beta </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If we get a write failure on disk for the log, we should stop
+ all usage of transactional tables and mark all transactional
+ tables that are changed as crashed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Missing features that are planned to be
+ fixed before Beta</emphasis>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ We will add a maria-recover option to automatically repair any
+ crashed tables on open. (This is needed for non-transactional
+ tables and also in edge cases for transactional tables when
+ the table crashed because of a bug in MySQL or
+ <literal>Maria</literal> code)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Features planned for future
+ releases</emphasis>
+ </para>
+
+ <para>
+ You can find details on additional features and functionality
+ planned for <literal>Maria</literal>, see
+ <ulink url="http://forge.mysql.com/worklog/">MySQL Forge
+ Worklog</ulink>.
+ </para>
+
+ </section>
+
+</section>
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r11292 - trunk/refman-6.0 | mcbrown | 21 Jul |