Reducing disk IO

I’m using a Raspberry Pi 4 with a USB3 based SSD to host this website and other services, and as a side effect the lounge looks like a disco due to all the flashing activity LEDs.
The machine should be fairly idle so I went looking for where the disk activity was coming from.
Running iotop -a and looking at the writes shows that mysql (aka
MariaDB) is by far the heaviest writer.
Looking at the metrics recorded by the Prometheus mysqld_exporter:
delta(mysql_global_status_commands_total[1h])
gives:

which is dominated by inserts.
Dropping to the mysql command line and running:
SELECT table_name, table_rows from
INFORMATION_SCHEMA.TABLES ORDER BY table_rows DESC LIMIT 20;
gives:
| table_name | table_rows |
|---|---|
| events | 1731748 |
| states | 1577498 |
| oc_filecache | 26239 |
| notice | 23483 |
The events and states tables are part of my
HomeAssistant installation. Reading
the docs shows that the recorder commits every second and changing this
to 5m using:
recorder:
db_url: mysql+pymysql://hass:....@db/hass?charset=utf8
commit_interval: 300
fixes the problem. This reduces the write rate from 680 KiB/s to ~95 KiB/s:

and cuts the I/O seconds per second:

and makes the lounge much less blinky, yay!