MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
  • MariaDB\ 71.8%
  • C++ 16.4%
  • C 10.4%
  • Shell 0.5%
  • Perl 0.4%
  • Other 0.3%
Find a file
Marko Mäkelä 8bb4ea2e6f MDEV-19738: Doublewrite buffer is unnecessarily used for newly (re)initialized pages
Thanks to MDEV-12699, the doublewrite buffer will only be needed in
those cases when a page is being updated in the data file. If the page
had never been written to the data file since it was initialized,
then recovery will be able to reconstruct the page based solely on
the contents of the redo log files.

The doublewrite buffer is only really needed when recovery needs to read
the page in order to apply redo log.

Note: As noted in MDEV-19739, we cannot safely disable the doublewrite
buffer if any MLOG_INDEX_LOAD records were written in the past or will
be written in the future. These records denote that redo logging was
disabled for some pages in a tablespace. Ideally, we would have
the setting innodb_log_optimize_ddl=OFF by default, and would not allow
it to be set while the server is running. If we wanted to make this
safe, assignments with SET GLOBAL innodb_log_optimize_ddl=...
should not only issue a redo log checkpoint (including a write of all
dirty pages from the entire buffer pool), but it should also wait for
all pending ALTER TABLE activity to complete. We elect not to do this.

Avoiding unnecessary use of the doublewrite buffer should improve the
write performance of InnoDB.

buf_page_t::init_on_flush: A new flag to indicate whether it is safe to
skip doublewrite buffering when writing the page.

fsp_init_file_page(): When writing a MLOG_INIT_FILE_PAGE2 record,
set the init_on_flush flag if innodb_log_optimize_ddl=OFF.
This is the only function that writes that log record.

buf_flush_write_block_low(): Skip doublewrite if init_on_flush is set.

fil_aio_wait(): Clear init_on_flush.
2019-06-12 20:18:01 +03:00
BUILD Fixed build scripts to not use -fno-rtti 2019-06-01 15:21:50 +03:00
client Merge 10.4 into 10.5 2019-05-23 10:32:21 +03:00
cmake Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
dbug Merge 10.2 into 10.3 2019-05-14 17:18:46 +03:00
debian Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
Docs MDEV-19544 Remove innodb_locks_unsafe_for_binlog 2019-05-23 10:25:12 +03:00
extra Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
include Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
libmariadb@68e6c5bd67 Fix the Windows build 2019-05-05 22:59:53 +03:00
libmysqld MDEV-19710 Split the server side code in rpl_utility.cc into virtual methods in Type_handler 2019-06-07 12:47:24 +04:00
libservices Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
man Merge 10.3 into 10.4 2019-05-29 22:17:00 +03:00
mysql-test MDEV-19727 Add Type_handler::Key_part_spec_init_ft 2019-06-11 07:54:37 +04:00
mysys Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
mysys_ssl Fix compilation on Linux 2019-05-29 06:06:36 +02:00
pcre Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
plugin Merge 10.4 into 10.5 2019-05-29 22:29:05 +03:00
randgen/conf
scripts Merge 10.4 into 10.5 2019-05-23 10:32:21 +03:00
sql Move server_threads.erase() under lightweight cleanup as 2019-06-12 12:25:24 +03:00
sql-bench Merge 10.2 into 10.3 2019-05-14 17:18:46 +03:00
sql-common MDEV-18531 : Use WolfSSL instead of YaSSL as "bundled" SSL/encryption library 2019-05-22 13:48:25 +02:00
storage MDEV-19738: Doublewrite buffer is unnecessarily used for newly (re)initialized pages 2019-06-12 20:18:01 +03:00
strings Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
support-files MDEV-18531 : Use WolfSSL instead of YaSSL as "bundled" SSL/encryption library 2019-05-22 13:48:25 +02:00
tests Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
unittest MDEV-18531 : Use WolfSSL instead of YaSSL as "bundled" SSL/encryption library 2019-05-22 13:48:25 +02:00
vio MDEV-18531 : Use WolfSSL instead of YaSSL as "bundled" SSL/encryption library 2019-05-22 13:48:25 +02:00
win Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
wsrep-lib@e9dafb7373 Fixed wsrep replaying for stored procedures (#1256) 2019-04-06 12:33:51 +03:00
zlib Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
.gitattributes Merge branch '10.0' into 10.1 2018-05-05 14:01:59 +02:00
.gitignore MDEV-17841 S3 storage engine 2019-05-23 02:28:23 +03:00
.gitmodules Merge 10.4 to 10.5 2019-05-27 11:08:51 +03:00
.travis.compiler.sh travis: use galera-4 in 10.4 branch (#1226) 2019-03-14 08:20:32 +02:00
.travis.yml travis: use galera-4 in 10.4 branch (#1226) 2019-03-14 08:20:32 +02:00
appveyor.yml Appveyor configuration and addition of badge 2019-01-10 11:58:02 +01:00
BUILD-CMAKE Minor spelling fixes in code comments, docs and output 2018-01-12 16:49:02 +02:00
CMakeLists.txt Merge 10.4 to 10.5 2019-05-27 11:08:51 +03:00
config.h.cmake Merge 10.4 to 10.5 2019-05-27 11:08:51 +03:00
configure.cmake Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
CONTRIBUTING.md Add CONTRIBUTING file and modify README file about live QA regarding new contributors 2018-12-04 23:15:33 +04:00
COPYING Update FSF Address 2019-05-11 21:29:06 +03:00
CREDITS Update contributors 2018-09-10 16:47:44 +04:00
EXCEPTIONS-CLIENT MDEV-5645 MariaDB-5.5.35 - references are made to an "EXCEPTIONS-CLIENT" file but it does not exist 2014-05-31 13:18:56 +02:00
INSTALL-SOURCE Update AskMonty and Atlassian references to MariaDB 2016-03-08 15:24:01 +02:00
INSTALL-WIN-SOURCE Update AskMonty and Atlassian references to MariaDB 2016-03-08 15:24:01 +02:00
KNOWN_BUGS.txt Changed some MySQL names in messages to MariaDB 2018-12-09 20:49:05 +02:00
README.md Merge branch '10.3' into 10.4 2019-05-19 20:55:37 +02:00
THIRDPARTY Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
VERSION bump the VERSION 2019-05-21 08:40:47 -04:00

Code status:

  • Travis CI status travis-ci.org (10.4 branch)
  • Appveyor CI status ci.appveyor.com

MariaDB: drop-in replacement for MySQL

MariaDB is designed as a drop-in replacement of MySQL(R) with more features, new storage engines, fewer bugs, and better performance.

MariaDB is brought to you by the MariaDB Foundation and the MariaDB corporation. Please read the CREDITS file for details about the MariaDB Foundation, and who is developing MariaDB.

MariaDB is developed by many of the original developers of MySQL who now work for the MariaDB Corporation, the MariaDB Foundation and by many people in the community.

MySQL, which is the base of MariaDB, is a product and trademark of Oracle Corporation, Inc. For a list of developers and other contributors, see the Credits appendix. You can also run 'SHOW authors' to get a list of active contributors.

A description of the MariaDB project and a manual can be found at:

https://mariadb.com/kb/en/

https://mariadb.com/kb/en/mariadb-vs-mysql-features/

https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/

https://mariadb.com/kb/en/library/new-and-old-releases/

https://mariadb.org/

As MariaDB is a full replacement of MySQL, the MySQL manual at http://dev.mysql.com/doc is generally applicable.

Help

More help is available from the Maria Discuss mailing list https://launchpad.net/~maria-discuss and the #maria IRC channel on Freenode.

Live QA for beginner contributors

MariaDB has a dedicated time each week when we answer new contributor questions live on Zulip and IRC. From 8:00 to 10:00 UTC on Mondays, and 10:00 to 12:00 UTC on Thursdays, anyone can ask any questions theyd like, and a live developer will be available to assist.

New contributors can ask questions any time, but we will provide immediate feedback during that interval.

Licensing


NOTE:

MariaDB is specifically available only under version 2 of the GNU General Public License (GPLv2). (I.e. Without the "any later version" clause.) This is inherited from MySQL. Please see the README file in the MySQL distribution for more information.

License information can be found in the COPYING file. Third party license information can be found in the THIRDPARTY file.


Bug Reports

Bug and/or error reports regarding MariaDB should be submitted at: https://jira.mariadb.org

For reporting security vulnerabilities see: https://mariadb.org/about/security-policy/

Bugs in the MySQL code can also be submitted at: https://bugs.mysql.com

The code for MariaDB, including all revision history, can be found at: https://github.com/MariaDB/server