mariadb/mysql-test/suite
Monty 9d53fbef7c MMDEV-19749 MDL scalability regression after backup locks
The MDL_BACKUP_COMMIT lock used in handler.cc:ha_commit_trans() that is
used to block commits as part of FLUSH TABLES WITH READ LOCK and BACKUP
STAGE BLOCK_COMMIT can have a notable performance impact
We need the commit block to be able to ensure consistent backups.

The purpose of this commit is to instead of taking an expensive MDL lock,
to protect each commit for a unlikely backup or FTWRL, we would instead
add markers to threads that are doing a commit and when BLOCK_COMMIT or
a FTWRL lock is used we would do slightly more work to ensure that all
threads are taking MDL locks before taking the requested lock.

When backup and FTRWL are not running we are now incrementing a global
variable and setting a marker in the THD to signal that the thread is
in the 'protected commit code block'.

When FTWRL or BACKUP STAGE START is executed we enable MDL locking for
commits and wait until all threads are outside of the protected block
before continuing.
When FTWRL and BACKUP STAGE end, we mark that MDL protecting is not
anymore needed.

The effect is that we change a MDL lock to two atomic increments and
two memory assignments and one extra if. This speeds up commits
but causes FTWRL and BACKUP STAGE START to be slower to start as
they have to wait for active commits to complete.

Most of the new logic can be found in the functions:
enable_backup_commit_locks(), protect_against_backup() and
unprotect_against_backup().

Other things:
- The changes in the tests where because BACKUP STAGE START will now
  block if there are threads inside the 'protected commit block'.
  Before we waited in the test for BACKUP STAGE BLOCK COMMIT. I have
  now changed the tests to either wait for BACKUP STAGE START or by
  doing BACKUP STAGE START early and wait for BACKUP STAGE COMMIT.
- Added MDL_request mdl_backup to THD to avoid initializing a new
  MDL_request for each commit and to simplify some code.
  This added 448 bytes to the THD.
2025-04-11 07:41:58 +03:00
..
archive Merge branch '10.5' into 10.6 2024-12-17 11:06:09 +11:00
atomic Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
binlog MDEV-35506 commit policy of one-phase-commit even at errored-out binlogging leads to assert 2025-04-03 20:13:10 +03:00
binlog_encryption Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
client
compat Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
csv Backporting bugs fixes fixed by MDEV-31340 from 11.5 2024-05-21 14:58:01 +04:00
encryption Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
engines MDEV-29344: engines/iuds.insert_time cannot run with PS protocol (syntax error) 2025-03-17 18:11:51 +07:00
federated Allow 'mariadb' as a connection wrapper name for FederatedX. 2025-02-25 16:04:56 +02:00
funcs_1 MDEV-35810 fix test results 2025-01-14 14:01:28 +01:00
funcs_2 Merge 10.5 into 10.6 2025-03-26 17:09:57 +02:00
galera Merge branch '10.6' into '10.11' 2025-04-02 06:33:39 +02:00
galera_3nodes Merge branch '10.6' into '10.11' 2025-04-02 06:33:39 +02:00
galera_3nodes_sr galera mtr tests: synchronization between branches and editions 2025-04-02 04:50:11 +02:00
galera_sr Merge branch '10.6' into '10.11' 2025-04-02 06:33:39 +02:00
gcol MDEV-35000: dict_table_close() breaks STATS_AUTO_RECALC 2025-02-28 09:00:16 +02:00
handler Merge branch '10.5' into 10.6 2024-12-17 11:06:09 +11:00
heap Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
innodb MDEV-36489 10.11 crashes during bootstrap on macOS 2025-04-07 11:01:17 +03:00
innodb_fts Merge 10.6 into 10.11 2025-03-28 10:55:40 +02:00
innodb_gis Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
innodb_i_s
innodb_zip Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
jp
json Merge branch '10.6' into 10.11 2024-10-29 15:24:38 +01:00
large_tests
maria Merge 10.6 into 10.11 2025-01-08 12:51:26 +02:00
mariabackup MDEV-36437 mariabackup - confusing error message when running out of file handles with partitioned MyISAM 2025-03-31 17:57:35 +02:00
mtr/t Remove dates from all rdiff files 2025-01-05 16:40:11 +02:00
mtr2
multi_source MDEV-36238 Functional Tests for --master-info-file and --show-slave-auth-info 2025-03-18 18:17:02 -06:00
optimizer_unfixed_bugs
parts Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
perfschema Merge 10.6 into 10.11 2025-02-10 14:45:18 +02:00
perfschema_stress
period Merge 10.6 into 10.11 2025-01-08 12:51:26 +02:00
plugins Merge 10.6 into 10.11 2024-12-19 15:38:53 +02:00
roles Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
rpl MMDEV-19749 MDL scalability regression after backup locks 2025-04-11 07:41:58 +03:00
s3 Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
sql_sequence Merge 10.6 into 10.11 2025-03-27 08:01:47 +02:00
storage_engine
stress MDEV-34453 Trying to read 16384 bytes at 70368744161280 outside the bounds of the file: ./ibdata1 2024-09-20 20:26:43 +05:30
sys_vars MDEV-21923: LSN allocation is a bottleneck 2025-04-10 13:02:17 +03:00
sysschema
unit
vcol Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
versioning Merge branch '10.6' into '10.11' 2025-04-02 06:33:39 +02:00
wsrep Merge branch '10.5' into '10.6' 2025-04-02 04:43:24 +02:00