Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.3, 10.2.0, 10.3.0
-
10.3.6-1
Description
The CREATE TABLE attribute page_compressed that was introduced in MariaDB 10.1.3 has no effect when innodb_doublewrite=0. This is because the actual compression only takes place within the doublewrite buffer code path.
The purpose of the doublewrite buffer is to guarantee crash-safety in the event that InnoDB is killed in the middle of a page write. Because it could become a performance bottleneck for write-heavy workloads, some users may choose to set innodb_doublewrite=0 and take the risk that crash recovery may fail. (The page should be referred to by the redo log, and a log checkpoint should not be made while a page write is still in progress, so the page corruption should be detected at InnoDB startup.)
Attachments
Issue Links
- relates to
-
MDEV-15529 IMPORT TABLESPACE unnecessarily uses the doublewrite buffer
-
- Closed
-
-
MDEV-25734 mbstream breaks page compression on XFS
-
- Closed
-
-
MDEV-11696 Page Compression Has No Effect on Table Data File Size
-
- Closed
-
To repeat this, run:
./mtr --mysqld=--skip-innodb-doublewrite encryption.innodb-discard-import
And observe the test failure:
CURRENT_TEST: encryption.innodb-discard-import
--- /mariadb/10.2/mysql-test/suite/encryption/r/innodb-discard-import.result 2017-05-10 14:14:26.228207275 +0300
+++ /mariadb/10.2/mysql-test/suite/encryption/r/innodb-discard-import.reject 2018-03-09 14:32:57.500763121 +0200
@@ -129,6 +129,6 @@
# t3 yes on expecting NOT FOUND
NOT FOUND /tmpres/ in t3.ibd
# t4 yes on expecting NOT FOUND
-NOT FOUND /mysql/ in t4.ibd
+FOUND 484 /mysql/ in t4.ibd
DROP PROCEDURE innodb_insert_proc;
DROP TABLE t1,t2,t3,t4;
mysqltest: Result content mismatch
MDEV-15529will disable this part of the test.