Hi Rob,
mysqlcheck -a analyses and reports, -o optimizes (which in innodb means writing all data out to a temporary table, then truncating and replacing the original. This can be slow and write-blocking whilst it’s underway).
Neither is destructive – they don’t delete or purge data.
There is no mariadb command to act upon a random database and purge old data, probably because mariadb itself does not record the age of rows (afaik)
The normal process for expiring aged data is to have a column in your table with a date (which can be automatically added at the time of insertion if specified in that table’s schema)
Then you would run something like;
“DELETE FROM TableName WHERE DateRowName < DATE_SUB(NOW(),INTERVAL 1 YEAR);”
Which would delete all rows older than a year based on the date in DateRowName.
Note: That may not release the disk space until an mysqlcheck -o is run, or the equivalent sql command “OPTIMIZE TABLE TableName;”. (See wider topics on innodb fragmentation)
From: robert k Wild via discuss <discuss@lists.mariadb.org>
Sent: Wednesday, June 28, 2023 7:52 PM
To: discuss@lists.mariadb.org
Subject: [MariaDB discuss] can you purge data older than 4 months old
hi all,
i was just wondering i know about the "mysqlcheck -a and -o" ie to optimize and to analyse ie to cut it down in size but NOT to purge any data
but is there like a purge option to delete all data older than 4 months old in the database
thanks,
rob
--Regards,
Robert K Wild.