<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MariaDB Archives - Hécate Regnier - Neurozone</title>
	<atom:link href="https://hecate.neurozone.fr/category/mariadb/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>DBA, DevOps &#38; Sysadmin</description>
	<lastBuildDate>Mon, 02 Nov 2026 19:56:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://hecate.neurozone.fr/wp-content/uploads/2026/10/cropped-avatar_Instagram-150x150.webp</url>
	<title>MariaDB Archives - Hécate Regnier - Neurozone</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">258172890</site>	<item>
		<title>Inside database data files (1/3): InnoDB, from MySQL to MariaDB</title>
		<link>https://hecate.neurozone.fr/2026/10/23/inside-database-data-files-1-3-innodb-from-mysql-to-mariadb/</link>
					<comments>https://hecate.neurozone.fr/2026/10/23/inside-database-data-files-1-3-innodb-from-mysql-to-mariadb/#respond</comments>
		
		<dc:creator><![CDATA[Hécate Regnier]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Sysadmin notebook]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[series: Inside database data files]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[sysadmin notebook]]></category>
		<guid isPermaLink="false">https://hecate.neurozone.fr/?p=377</guid>

					<description><![CDATA[<p>How InnoDB stores data on disk: pages, extents, segments, the doublewrite buffer and the clustered index, and why a file doesn't shrink after a DELETE.</p>
<p>The post <a href="https://hecate.neurozone.fr/2026/10/23/inside-database-data-files-1-3-innodb-from-mysql-to-mariadb/">Inside database data files (1/3): InnoDB, from MySQL to MariaDB</a> appeared first on <a href="https://hecate.neurozone.fr">Hécate Regnier - Neurozone</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A relational database gives the illusion of tables, rows and columns. On disk there are only files cut into fixed-size blocks. This first part looks at InnoDB, the storage engine of MySQL and MariaDB. Understanding how those blocks are organised explains a lot of behaviour that looks mysterious: why a file doesn&#8217;t shrink after a <code>DELETE</code>, why a UUID primary key slows inserts down, why a secondary index costs more than you&#8217;d think, or what the &#8220;doublewrite buffer&#8221; actually protects.</p>



<p class="wp-block-paragraph">This three-part series opens the hood of three engines: <strong>InnoDB</strong> (the storage engine of MySQL and MariaDB), <strong>PostgreSQL</strong> and <strong>Oracle</strong>. The same thread runs through them: files, pages, rows, and where old versions of the data live. First stop: InnoDB.</p>



<h2 class="wp-block-heading">The data directory</h2>



<figure class="wp-block-image size-full"><a href="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en.webp"><img fetchpriority="high" decoding="async" width="1800" height="900" src="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en.webp" alt="MySQL 8 datadir tree" class="wp-image-363" srcset="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en.webp 1800w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en-300x150.webp 300w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en-1024x512.webp 1024w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en-768x384.webp 768w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_files_en-1536x768.webp 1536w" sizes="(max-width: 800px) 100vw, 760px" /></a><figcaption class="wp-element-caption">The files of a MySQL 8 instance and their MariaDB equivalents.</figcaption></figure>



<p class="wp-block-paragraph">Each file has a specific job:</p>



<ul class="wp-block-list"><li><strong><code>ibdata1</code></strong>, the <em>system tablespace</em>. Historically it held everything: tables, indexes, undo, dictionary. Today it only keeps the <em>change buffer</em> (on MySQL) and, on MariaDB, the doublewrite and sometimes undo. It never shrinks: a 50 GB <code>ibdata1</code> bloated by an old transaction stays that way, and the only way to reduce it is a full export and re-import;</li><li><strong>one <code>.ibd</code> file per table</strong>, thanks to <code>innodb_file_per_table=ON</code> (the default since MySQL 5.6). That&#8217;s what lets you reclaim the space of a dropped or truncated table (<code>DROP</code>, <code>TRUNCATE</code>), move a single table, or restore a single tablespace;</li><li><strong>undo tablespaces</strong> (<code>undo_001</code>…): before-images of modified rows, for <code>ROLLBACK</code> and for other transactions&#8217; consistent reads;</li><li><strong>the redo log</strong>: every page change is described there before the page itself is written to disk. After a crash, InnoDB replays it;</li><li><strong>the doublewrite buffer</strong>, explained below;</li><li><strong>binlogs</strong>, which belong to the server, not InnoDB: they describe changes at SQL level, for replication and point-in-time recovery.</li></ul>



<p class="wp-block-paragraph">An SQL database (<code>CREATE DATABASE shop</code>) is nothing but a directory. The exact global file names vary: MySQL and MariaDB diverged on the dictionary (MySQL 8 replaced <code>.frm</code> files with a transactional dictionary in <code>mysql.ibd</code>; MariaDB kept the <code>.frm</code> files), on redo and on doublewrite. The internal page format is shared. To see an instance&#8217;s tablespaces:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql">-- MySQL 8
SELECT name, file_size, allocated_size FROM information_schema.INNODB_TABLESPACES;
-- MariaDB
SELECT name, file_size, allocated_size FROM information_schema.INNODB_SYS_TABLESPACES;</pre>



<h2 class="wp-block-heading">Pages, extents, segments</h2>



<figure class="wp-block-image size-full"><a href="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en.webp"><img decoding="async" width="1800" height="820" src="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en.webp" alt="Tablespace, segment, extent and page hierarchy" class="wp-image-364" srcset="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en.webp 1800w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en-300x137.webp 300w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en-1024x466.webp 1024w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en-768x350.webp 768w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_hierarchy_en-1536x700.webp 1536w" sizes="(max-width: 800px) 100vw, 760px" /></a><figcaption class="wp-element-caption">A tablespace is cut into 16 KB pages, grouped into 1 MB extents, assigned to each index&#8217;s segments.</figcaption></figure>



<p class="wp-block-paragraph">The basic unit is the <strong>page</strong>, 16 KB by default. Its size (<code>innodb_page_size</code>) is fixed when the instance is created and can&#8217;t change afterwards. Everything InnoDB reads or writes, it reads or writes as whole pages: reading a 100-byte row means loading 16 KB into memory, into the <em>buffer pool</em>.</p>



<p class="wp-block-paragraph">Pages are grouped into <strong>extents</strong> of 64 pages, i.e. 1 MB. Allocating by extent rather than page by page keeps one index&#8217;s pages physically close, which makes sequential reads efficient.</p>



<p class="wp-block-paragraph">Each index has two <strong>segments</strong>: one for its leaf pages, one for its internal pages. Separating them keeps the leaves (where the data is) contiguous, for range scans. So as not to reserve 1 MB for every small table, a segment first gets up to 32 individual pages, and only moves to full extents after that. That&#8217;s why an empty table takes a hundred kilobytes or so, not several megabytes.</p>



<p class="wp-block-paragraph">The first pages of an <code>.ibd</code> are reserved for space management: page 0 (<code>FSP_HDR</code>) describes the state of extents, page 1 the change-buffer bitmap, page 2 the segment &#8220;inodes&#8221;. On MySQL 8, page 3 holds the table description as JSON (SDI) and the clustered index root is page 4. On MariaDB, which keeps <code>.frm</code> files, the root is page 3.</p>



<h2 class="wp-block-heading">Anatomy of a page</h2>



<figure class="wp-block-image size-full"><a href="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en.webp"><img decoding="async" width="1720" height="1044" src="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en.webp" alt="Structure of a 16 KB InnoDB index page" class="wp-image-365" srcset="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en.webp 1720w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en-300x182.webp 300w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en-1024x622.webp 1024w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en-768x466.webp 768w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_page_en-1536x932.webp 1536w" sizes="(max-width: 800px) 100vw, 760px" /></a><figcaption class="wp-element-caption">An index page: headers, records, free space, directory and trailer.</figcaption></figure>



<p class="wp-block-paragraph">Each area has a reason to exist:</p>



<ul class="wp-block-list"><li><strong>The FIL header</strong> is shared by every page, whatever its type. It holds the checksum, which detects corruption on read, and the <strong>LSN</strong> (Log Sequence Number) of the last change. After a crash, InnoDB compares that LSN with each redo entry&#8217;s: it only replays what the page hasn&#8217;t received yet. The previous and next page pointers link every page of one tree level;</li><li><strong>the INDEX header</strong> gives the page&#8217;s level in the tree (0 for a leaf), the record count and the ID of the index it belongs to;</li><li><strong>infimum and supremum</strong> are two fake records, the smallest and largest possible. They act as start and end of the linked list of records, which simplifies insertion code;</li><li><strong>records</strong> are written in arrival order, but each points to the next <em>in key order</em>. Inserting in the middle moves nothing: two pointers change;</li><li><strong>the page directory</strong> starts at the end of the page and grows upwards. It holds one &#8220;slot&#8221; per 4–8 records. To find a key, InnoDB binary-searches the slots, then walks at most a few records along the linked list;</li><li><strong>the FIL trailer</strong> repeats part of the LSN and checksum. If the start and end of the page don&#8217;t match, the page was only half written.</li></ul>



<p class="wp-block-paragraph">When a page is full and a record must go in, InnoDB <strong>splits it in two</strong> (page split) and updates the parent page. When two neighbouring pages drop below half full, it can merge them. These operations are expensive and leave half-empty pages: that&#8217;s fragmentation.</p>



<h2 class="wp-block-heading">The doublewrite buffer: why write twice</h2>



<p class="wp-block-paragraph">A disk guarantees atomic writes of 512 bytes or 4 KB, not 16 KB. If the server stops in the middle of writing a page, it can end up half old, half new: a <em>torn page</em>. Redo can&#8217;t fix it, because it describes changes to apply to a consistent page. So InnoDB writes each page first to the doublewrite buffer, then to its final location. After a crash, a torn page is replaced by its intact copy, then redo is applied. On a filesystem that itself guarantees atomic 16 KB writes (ZFS, some SSDs), it can be turned off.</p>



<h2 class="wp-block-heading">A record</h2>



<figure class="wp-block-image size-full"><a href="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en.webp"><img loading="lazy" decoding="async" width="1800" height="628" src="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en.webp" alt="InnoDB DYNAMIC record format" class="wp-image-366" srcset="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en.webp 1800w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en-300x105.webp 300w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en-1024x357.webp 1024w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en-768x268.webp 768w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_record_en-1536x536.webp 1536w" sizes="auto, (max-width: 800px) 100vw, 760px" /></a><figcaption class="wp-element-caption">A clustered-index record and its header in detail.</figcaption></figure>



<ul class="wp-block-list"><li><strong>Hidden columns</strong>: <code>DB_TRX_ID</code> is the ID of the last transaction that modified the row, <code>DB_ROLL_PTR</code> points to the previous image in undo. A transaction that mustn&#8217;t see the change follows that pointer to rebuild the old version;</li><li><strong>without a primary key</strong>, InnoDB uses the first non-null unique key, or failing that adds a hidden 6-byte <code>DB_ROW_ID</code> column, fed by a global counter shared by all such tables. Always define a primary key;</li><li><strong>the &#8220;deleted&#8221; bit</strong>: a <code>DELETE</code> only marks the record. It&#8217;s actually removed later by the <em>purge thread</em>, once no transaction can see it any more;</li><li><strong>NULLs</strong> cost only a bit in the bitmap: no room in the data;</li><li><strong>long columns</strong> (<code>TEXT</code>, <code>BLOB</code>, large <code>VARCHAR</code>): a record must fit in roughly half a page, so a page holds at least two records. In <code>DYNAMIC</code> format, a value that&#8217;s too long goes entirely to overflow pages, and the record keeps only a 20-byte pointer.</li></ul>



<h2 class="wp-block-heading">The InnoDB clustered index: the table is a tree</h2>



<figure class="wp-block-image size-full"><a href="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en.webp"><img loading="lazy" decoding="async" width="1800" height="840" src="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en.webp" alt="InnoDB clustered and secondary index" class="wp-image-362" srcset="https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en.webp 1800w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en-300x140.webp 300w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en-1024x478.webp 1024w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en-768x358.webp 768w, https://hecate.neurozone.fr/wp-content/uploads/2026/10/innodb_btree_en-1536x717.webp 1536w" sizes="auto, (max-width: 800px) 100vw, 760px" /></a><figcaption class="wp-element-caption">The PRIMARY index leaves hold the rows; a secondary index holds the primary key.</figcaption></figure>



<p class="wp-block-paragraph">This is InnoDB&#8217;s most important design decision: <strong>the table is the primary key index</strong>. There&#8217;s no separate &#8220;heap&#8221; of rows: full rows are stored in the leaves of a B+tree sorted by primary key. Several practical consequences follow:</p>



<ul class="wp-block-list"><li><strong>a primary key lookup</strong> descends the tree and finds the row directly. With 16 KB pages and a <code>BIGINT</code> key, an internal page references over a thousand child pages: three levels are enough for hundreds of millions of rows;</li><li><strong>an increasing primary key</strong> (<code>AUTO_INCREMENT</code>) always appends at the right of the tree: pages fill cleanly, with no splits in the middle. A random key (UUID v4) inserts anywhere, causes splits everywhere and leaves half-full pages. Time-ordered UUIDs (UUID v7) avoid the problem;</li><li><strong>a secondary index</strong> doesn&#8217;t hold the row&#8217;s physical address but its <strong>primary key</strong>. A secondary index lookup therefore costs two tree descents. In return, moving a row during a split doesn&#8217;t require updating the secondary indexes;</li><li><strong>a long primary key</strong> is copied into every secondary index: a 36-character key inflates every index;</li><li><strong>a covering index</strong>, holding every column the query needs, avoids the second descent: <code>EXPLAIN</code> then shows <code>Using index</code>.</li></ul>



<h2 class="wp-block-heading">Why the file doesn&#8217;t shrink</h2>



<p class="wp-block-paragraph">A massive <code>DELETE</code> frees room <em>inside</em> the pages, which later inserts will reuse, but gives nothing back to the filesystem. To reclaim space, rebuild the table:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql">OPTIMIZE TABLE shop.orders;          -- for InnoDB, equivalent to ALTER TABLE … FORCE
-- check how much space is actually reclaimable first
SELECT table_name, data_free/1024/1024 AS free_mb
FROM information_schema.tables WHERE table_schema=&#x27;shop&#x27; ORDER BY data_free DESC;</pre>



<p class="wp-block-paragraph">The rebuild copies every row into a new, compact file, then replaces the old one. It runs online on recent versions, but temporarily needs room for a second copy of the table.</p>



<p class="wp-block-paragraph">Next post: PostgreSQL, which made the opposite choice on almost every one of these points: a heap table, 8 KB pages, and old versions kept in the table itself.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><em>This post is part of a series of sysadmin notes (tag &#8220;sysadmin notebook&#8221;).</em><br>Series &#8220;Inside database data files&#8221;, part 1/3. · <a href="https://hecate.neurozone.fr/?p=378">Next post →</a> · <a href="https://blog.neurozone.fr/?p=1787">Version française</a></p>



<h2 class="wp-block-heading">Related articles</h2>



<ul class="wp-block-list"><li><a href="https://hecate.neurozone.fr/?p=378">How PostgreSQL stores data on disk</a></li><li><a href="https://hecate.neurozone.fr/?p=379">How Oracle stores data on disk</a></li><li><a href="https://hecate.neurozone.fr/?p=596">MariaDB settings that really matter</a></li></ul>

<p>The post <a href="https://hecate.neurozone.fr/2026/10/23/inside-database-data-files-1-3-innodb-from-mysql-to-mariadb/">Inside database data files (1/3): InnoDB, from MySQL to MariaDB</a> appeared first on <a href="https://hecate.neurozone.fr">Hécate Regnier - Neurozone</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hecate.neurozone.fr/2026/10/23/inside-database-data-files-1-3-innodb-from-mysql-to-mariadb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">377</post-id>	</item>
		<item>
		<title>MySQL export without &#8211;lock-tables</title>
		<link>https://hecate.neurozone.fr/2020/04/04/mysqldump-without-lock-tables/</link>
		
		<dc:creator><![CDATA[Hécate Regnier]]></dc:creator>
		<pubDate>Sat, 04 Apr 2020 19:19:18 +0000</pubDate>
				<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://hecate.me/?p=53</guid>

					<description><![CDATA[<p>Dump MySQL without locking every table: the mysqldump --single-transaction option starts a REPEATABLE READ transaction first, useful for InnoDB tables.</p>
<p>The post <a href="https://hecate.neurozone.fr/2020/04/04/mysqldump-without-lock-tables/">MySQL export without &#8211;lock-tables</a> appeared first on <a href="https://hecate.neurozone.fr">Hécate Regnier - Neurozone</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">One of the difficulties with mysqldump is to deal with lock tables.</p>



<h2 class="wp-block-heading">How mysqldump avoids locking tables</h2>



<p class="wp-block-paragraph">But there is an option in mysqldump we can use to change how to dump safely without locking all tables:</p>



<p class="wp-block-paragraph"><code>--single-transaction</code></p>



<p class="wp-block-paragraph">This option sets the transaction isolation mode to <a href="https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html#isolevel_repeatable-read"><code>REPEATABLE READ</code></a> and sends a <a href="https://dev.mysql.com/doc/refman/8.0/en/commit.html"><code>START TRANSACTION</code></a> SQL statement to the server before dumping data. It is useful only with transactional tables such as <code>InnoDB</code>, because then it dumps the consistent state of the database at the time when <a href="https://dev.mysql.com/doc/refman/8.0/en/commit.html"><code>START TRANSACTION</code></a> was issued without blocking any applications.</p>



<p class="wp-block-paragraph">When using this option, you should keep in mind that only <code>InnoDB</code> tables are dumped in a consistent state. For example, any <code>MyISAM</code> or <code>MEMORY</code> tables dumped while using this option may still change state.</p>



<p class="wp-block-paragraph">While a <a href="https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_single-transaction"><code>--single-transaction</code></a> dump is in process, to ensure a valid dump file (correct table contents and binary log coordinates), no other connection should use the following statements: <a href="https://dev.mysql.com/doc/refman/8.0/en/alter-table.html"><code>ALTER TABLE</code></a>, <a href="https://dev.mysql.com/doc/refman/8.0/en/create-table.html"><code>CREATE TABLE</code></a>, <a href="https://dev.mysql.com/doc/refman/8.0/en/drop-table.html"><code>DROP TABLE</code></a>, <a href="https://dev.mysql.com/doc/refman/8.0/en/rename-table.html"><code>RENAME TABLE</code></a>, <a href="https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html"><code>TRUNCATE TABLE</code></a>. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the <a href="https://dev.mysql.com/doc/refman/8.0/en/select.html"><code>SELECT</code></a> that is performed by <a href="https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html"><strong>mysqldump</strong></a> to retrieve the table contents to obtain incorrect contents or fail.</p>



<p class="wp-block-paragraph">The <code>--single-transaction</code> option and the <a href="https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_lock-tables"><code>--lock-tables</code></a> option are mutually exclusive because <a href="https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html"><code>LOCK TABLES</code></a> causes any pending transactions to be committed implicitly.</p>



<p class="wp-block-paragraph">To dump large tables, combine the <code>--single-transaction</code> option with the <a href="https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_quick"><code>--quick</code></a> option.</p>



<h2 class="wp-block-heading">Related articles</h2>



<ul class="wp-block-list"><li><a href="https://hecate.neurozone.fr/?p=596">MariaDB settings that really matter</a></li><li><a href="https://hecate.neurozone.fr/?p=377">How InnoDB stores data on disk</a></li><li><a href="https://hecate.neurozone.fr/?p=378">How PostgreSQL stores data on disk</a></li></ul>

<p>The post <a href="https://hecate.neurozone.fr/2020/04/04/mysqldump-without-lock-tables/">MySQL export without &#8211;lock-tables</a> appeared first on <a href="https://hecate.neurozone.fr">Hécate Regnier - Neurozone</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">53</post-id>	</item>
	</channel>
</rss>
