Sample Header Ad - 728x90

Should I defragment InnoDB table with fixed-length fields?

0 votes
2 answers
488 views
I am running MariaDB 10.2.13 on Linux (Debian). I am setting up an InnoDB table that will record a lot of data but I will keep only the last one-hour rows. Thus, the number of rows will remain constant. I should expect on this table: - many INSERTs - many UPDATEs - some DELETE (rows > 1 hour) from time to time #Example: Table is defined with **fixed-length fields only** and some indexes. CREATE TABLE tbl_log ( ip int(4) unsigned NOT NULL, date datetime NOT NULL, external_id smallint(6) unsigned NOT NULL, counter smallint(6) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (ip,external_id), KEY external_id (external_id), KEY counter (counter), KEY date_idx (date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Inserts (and updates, through on duplicate key) may look like this (*ip* and *external_id* will vary): INSERT INTO tbl_log SET ip = INET_ATON('192.168.1.1'), date = now(), external_id = 123, counter = 0 ON DUPLICATE KEY UPDATE counter=counter+1; Finally, deleting old rows will be done with a query: DELETE FROM tbl_log WHERE date < DATE_SUB(NOW(), INTERVAL 1 HOUR); #Question: **Will such a table fragment over time?** If so, I think I should defragment it. If necessary, I planned to run OPTIMIZE TABLE tbl_log; (with option innodb-defragment=1) right after delete...
Asked by Nicolas Payart (2508 rep)
Mar 20, 2018, 02:35 PM
Last activity: Mar 14, 2022, 01:01 PM