Details
-
Bug
-
Status: Open (View Workflow)
-
Minor
-
Resolution: Unresolved
-
12.0.1
-
None
-
None
Description
Point‑select throughput decreases by approximately 2.4 percent across the 12.0 → 12.0.1 commit window. The regression is clear, repeatable, and appears at the boundary where multi‑event trigger support is introduced. A surface‑level review indicates that the trigger metadata changes may increase table‑open overhead, which point‑read workloads are sensitive to. This does not establish root cause, but the timing and nature of the patch make it a reasonable area for further investigation.
Affected Versions
12.0.1
Later 12.x and 13.x releases may also be affected; analysis ongoing.
Observed Behavior
Throughput drops from approximately 381k TPS to approximately 371k TPS.
Regression is consistent across repeated runs.
The first step‑down occurs immediately after the multi‑event trigger patch.
Expected Behavior
No performance regression between 12.0.0 and 12.0.1 on a point‑read workload unless justified by architectural changes.
Commit‑Level TPS Boundary (12.0 → 12.0.1)
1e00b9ec2a13 — Fix typos
GOOD - 379076.29 TPS - f11504af51535bb2f5035 MDEV‑20034: weak SYS_REFCURSOR
173b16f3bca6 — MDEV‑11341 STR_TO_DATE
GOOD - 381076.65 TPS - 86ec20189a baf0b07150a0d73c6d6e0f2a3f4780 MDEV‑14091: password‑protected SSL key
BAD - 371878.68 TPS - ecb7c9b692811f96cfa54add61012a701c47523d MDEV‑10164: multi‑event triggers
BAD - 370236.69 TPS - ddfebd48f58678ff31427f7f7d971981e2d098ec MDEV‑23538: rename mariadb.pc
Technical Notes (surface‑level review)
- The multi‑event trigger patch is large and modifies how trigger metadata is stored and iterated.
- A single trigger may now be represented multiple times internally (one per event), with additional linked‑list pointers and event‑bitmask checks.
- Point‑select does not fire triggers, but it does open tables and load trigger metadata.
- Any increase in metadata processing during table‑open can affect point‑read workloads.
- Point‑select is highly sensitive to table‑open overhead, so even small changes can be visible in TPS.
- This does not establish causality; it identifies a plausible area for deeper review.
Benchmark Configuration (sysbench‑lua)
Test Suite: sysbench-lua
Test Case: Point Select
oltp_lua_script: oltp_point_select.lua
number_of_rows: 1000000
number_of_tables: 8
thread_count: 128
run_duration_seconds: 400
oltp_skip_trx: on
range_size: 100
forced_shutdown: 1
forced_shutdown_sec: 0
socket_count: 1
Configuration
disable-log-bin
performance_schema=OFF
sync_binlog=0
general_log=OFF
slow_query_log=OFF
default_storage_engine=InnoDB
default_authentication_plugin=mysql_native_password
tls_version=TLSv1.2,TLSv1.3
max_connections=500
open_files_limit=65535
table_open_cache=4000
thread_cache_size=128
thread_handling=one-thread-per-connection
thread_pool_size=0
# InnoDB
innodb_buffer_pool_size=30G
innodb_flush_log_at_trx_commit=1
innodb_doublewrite=1
innodb_flush_method=O_DIRECT
innodb_flush_neighbors=0
innodb_log_file_size=8G
innodb_undo_tablespaces=2
innodb_undo_log_truncate=ON
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_file_per_table=1
innodb_default_row_format=dynamic
innodb_compression_algorithm=none
innodb_compression_level=0
# sync
sync_master_info=0
sync_relay_log=0
sync_relay_log_info=0
aria_pagecache_buffer_size=128M
aria_sort_buffer_size=128M
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci