[management] Keep per-table tablespaces in the MySQL test container

With innodb_file_per_table off, the packages that create hundreds of
databases per run got slower, not faster, while the small ones sped up:
dropped databases leave the shared system tablespace to grow and
fragment, so every later CREATE and DROP pays for it. Keep the default
per-table files and only skip the redo, binary log and doublewrite
fsyncs.

The temporary timing workflow also prints a short disk and CPU
calibration so a slow runner can be told apart from a slow change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EsVtbd7MxMVsS9vP1H6KPS
This commit is contained in:
Maycon Santos
2026-09-12 10:34:58 +00:00
co-authored by Claude Fable 5.1
parent 61850162ca
commit c6e564caf0
2 changed files with 13 additions and 4 deletions
@@ -68,6 +68,14 @@ jobs:
docker pull mlsmaycon/warmed-mysql:8
docker image inspect mlsmaycon/warmed-mysql:8 --format 'entrypoint={{json .Config.Entrypoint}} cmd={{json .Config.Cmd}} env={{json .Config.Env}}'
- name: Runner calibration
run: |
nproc
grep -m1 "model name" /proc/cpuinfo
time dd if=/dev/zero of=/tmp/calib bs=1M count=256 conv=fsync
time sh -c 'for i in $(seq 1 200); do dd if=/dev/zero of=/tmp/calib-$i bs=4k count=1 conv=fsync 2>/dev/null; done'
rm -f /tmp/calib*
- name: Build test summarizer
run: go build -o /tmp/gotestsummary ./tools/gotestsummary
+5 -4
View File
@@ -39,11 +39,12 @@ func CreateMysqlTestContainer() (func(), string, error) {
mysql.WithPassword("testing"),
// Every test creates and drops a database with about 40 tables, so with
// the server defaults the run is dominated by durability work: each
// CREATE TABLE creates and fsyncs its own tablespace file and fsyncs the
// redo and binary logs. None of it protects anything in a container that
// is discarded after the run.
// CREATE TABLE fsyncs the redo log, the binary log and the doublewrite
// buffer. None of it protects anything in a container that is discarded
// after the run. Tables stay in per-table files on purpose: in the shared
// system tablespace the cost of every CREATE and DROP grew with the number
// of databases the run had already created.
testcontainers.WithCmd("mysqld",
"--innodb-file-per-table=OFF",
"--innodb-flush-log-at-trx-commit=0",
"--innodb-doublewrite=OFF",
"--skip-log-bin",