Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-39497

Performance Exploration: Server Options Impacting OLTP Workloads

    XMLWordPrintable

Details

    • Task
    • Status: Open (View Workflow)
    • Minor
    • Resolution: Unresolved
    • None
    • None

    Description

      This ticket tracks the set of MariaDB server options to be tested for performance impact across OLTP workloads (HammerDB TPROC-C).

      The goal is to establish a baseline and measure overhead introduced by durability, replication, charset, flushing, and concurrency-related settings.

      All tests will be compared to a baseline using:

      • MariaDB default/recommended options
      • crash-safe configuration
      • log-bin=0
      • innodb_flush_log_at_trx_commit=1
      • large buffer pool so all data fits in memory
      • One thread per connection
      • No ssl

      Test workload:

      • Suite: HammerDB TPROC-C
      • Load: Cached
      • Threads: 50
      • Warmup: 4 minutes
      • Duration: 15 minutes
      • Iterations: 3

      ===============================================================
      OPTIONS TO TEST (WITH RATIONALE)
      ===============================================================

      1. innodb_doublewrite
      WHY: Crash-safety vs performance. Note double_write is only relevant if server crashes. If MariaDB server crashes there should be no data corruption. A bit safer than innodb_flush_log_at_trx_commit=0 but not recommended.
      EXPECTED: OFF is faster, ON is safer.

      2. character_set_server (latin1 | utf8mb3| utf8mb4)
      WHY: Charset affects CPU and index width.

      3. performance_schema (ON | OFF)
      WHY: Instrumentation overhead.
      3a) With default performance schema options:
      performance_schema=ON
      3b) "Recommended" medium performance schema
      performance_schema=ON
      performance-schema-instrument='stage/%=ON'
      performance-schema-consumer-events-stages-current=ON
      performance-schema-consumer-events-stages-history=ON
      performance-schema-consumer-events-stages-history-long=ON

      3c) All performance schema options enabled
      performance_schema=ON
      performance-schema-instrument='stage/%=ON'
      performance-schema-consumer-events-stages-current=ON
      performance-schema-consumer-events-stages-history=ON
      performance-schema-consumer-events-stages-history-long=ON
      Execute on startup:
      UPDATE performance_schema.setup_instruments SET ENABLED="YES", TIMED="YES";
      UPDATE performance_schema.setup_consumers SET ENABLED="YES";
      UPDATE performance_schema.setup_objects SET ENABLED="YES", TIMED="YES";

      4) Bin Logging

      4a) log-bin (1)
      WHY: Baseline cost of enabling replication/PITR.
      Note that for this test we do not need to have a slave (The impact of having a slave should be neglectable. Should be proven with a separate replication test)

      4b) With a slave attached

      • The assumption is that the slave should have no noticeable impact on the master.

      4c). binlog_row_image (FULL | MINIMAL | NOBLOB) (requires log-bin=1)
      WHY: Controls binlog volume.
      Note that for this test we do not need to have a slave (The impact of having a slave should be neglectable. Should be proven with a separate replication test)

      4d). sync_binlog (0 | 1) (requires log-bin=1)
      WHY: Binlog durability cost.

      5. thread_handling (one-thread-per-connection | pool-of-threads)
      WHY: Thread model scalability.

      6. innodb_flush_log_at_trx_commit (0 | 1 | 2 )
      WHY: Durability vs performance.

      7. innodb_adaptive_hash_index (0 | 1)
      WHY: Lookup speed vs contention.

      8 query_cache_type (ON | OFF)
      WHY: QC mutex contention vs repeated SELECT speed.

      9. rpl_semi_sync_master_enable (0 | 1)
      WHY: Commit latency vs replication safety.

      10. rpl_semi_sync_master_wait_point (AFTER_SYNC | AFTER_COMMIT)
      WHY: Different semi-sync wait semantics.

      11. transaction_isolation (RU | RC | RR | SERIALIZABLE)
      WHY: Locking/MVCC overhead.
      NOTE: Must test with log-bin=0 and log-bin=1.
      Monty: Binlog performance should be independent of transaction isolation (no common code path). Performance drop should be identical to case 5) for all isolation modes. Needs to be proven.

      12. --log-slow-query=ON --log
      12a) --log-slow-query=ON --log-slow-query-time=0.001
      12b) --log-slow-query=ON --log-slow-query-time=0.001 --log-slow-filter="all" --log-slow-verbosity=all

      13) --general-log=ON

      14) Run test without ssl/tsl
      WHY: To understand the cost of ssl. It is quite normal that in secure datacenters users don't enable ssl

      15) Run the test with TidesDB with similar options as we use for InnoDB

      16) Run baseline with with P-cores, P+E cores and E-cores.

      Extra:
      1) When using another benchmark, also run with the Aria engine. Note Aria engine is not great for concurrency so better to use tests that are read intensive or each user uses different tables. In this case it is important use --aria_pagecache_segments=16 --aria-pagecache-size=16G

      ===============================================================
      Purpose:
      Provide a comprehensive performance map of MariaDB under different durability, replication, charset, flushing, and concurrency configurations. Others may add additional options or combinations here.
      ===============================================================

      Testing is being conducted on Hetzner Sponsor Hosts

      Hetzner Sponsor Host (hz-bench)
      CPU: 13th Gen Intel(R) Core(TM) i5-13500
      CPU Count: 20
      Core Count: 14
      Socket Count: 1
      RAM: 62.33 GB
      OS: AlmaLinux 9.7 (Moss Jungle Cat)
      Kernel: 5.14.0-811.35.1.el9_7.x86_64

      Hetzner Sponsor Host (hz-bench2)
      CPU: AMD EPYC 9454 48-Core Processor
      CPU Count: 96
      Core Count: 48
      Socket Count: 1
      RAM: 124.98 GB
      OS: AlmaLinux 9.8 (Olive Jaguar)
      Kernel: 5.14.0-687.29.1.el9_8.x86_64

      These systems provided the horsepower required to full fill request.

      We appreciate the outstanding support and the quality of the systems Hetzner.com provided throughout development.

      If you need hosting that’s reliable, affordable, and capable of handling serious engineering workloads, Hetzner.com delivers.

      Attachments

        1. BASELINE_chart.png
          BASELINE_chart.png
          44 kB
        2. TPROCC_20260828_233934.chartplus_testinfo.html
          5 kB
        3. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_28_22_42_24.properties
          3 kB
        4. MDEV39497_BASELINE.tar.gz
          1.23 MB
        5. BaseVsDoublewriteOff.png
          BaseVsDoublewriteOff.png
          55 kB
        6. TPROCC_BaseVsDoublewriteOff.html
          7 kB
        7. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_00_57_20.properties
          3 kB
        8. MDEV39497_INNODB_DOUBLEWRITE_OFF.tar.gz
          1.25 MB
        9. CharSetCompare.png
          CharSetCompare.png
          80 kB
        10. TPROCC_UTF8MB3vsUTF8MB3vsLATIN1.html
          8 kB
        11. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_02_52_49.properties
          3 kB
        12. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_01_55_09.properties
          3 kB
        13. MDEV39497_CHAR_SET.tar.gz
          2.47 MB
        14. IsoCompare.png
          IsoCompare.png
          106 kB
        15. TPROCC_Isolation_compare.html
          10 kB
        16. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_03_50_17.properties
          3 kB
        17. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_06_43_54.properties
          3 kB
        18. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_21_44_21.properties
          3 kB
        19. MDEV39497_ISOLATION_COMPARE.tar.gz
          3.80 MB
        20. BaselineVsBinlog.png
          BaselineVsBinlog.png
          54 kB
        21. TPROCC_Baseline_vs_Binlog.html
          7 kB
        22. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_04_47_41.properties
          3 kB
        23. MDEV39497_BINLOG.tar.gz
          1.23 MB
        24. screenshot-1.png
          screenshot-1.png
          111 kB
        25. TPROCC_Binlog_Isolation_Compare.html
          10 kB
        26. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_05_45_37.properties
          3 kB
        27. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_07_41_47.properties
          3 kB
        28. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_22_41_12.properties
          3 kB
        29. MDEV39497_ISOLATION_BINLOG.tar.gz
          3.89 MB
        30. BinlogVsMinVsNoBlob.png
          BinlogVsMinVsNoBlob.png
          80 kB
        31. TPROCC_FullVsMinVsNoblobBinlog.html
          8 kB
        32. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_16_18_08.properties
          3 kB
        33. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_17_14_37.properties
          3 kB
        34. MDEV39497_FullVsMinVsNoBlobBinlog.tar.gz
          2.58 MB
        35. screenshot-2.png
          screenshot-2.png
          78 kB
        36. TPROCC_SYNC_BINLOG.html
          8 kB
        37. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_30_15_15_12.properties
          3 kB
        38. MDEV39497_MDEV39497_BINLOG_SYNC.tar.gz
          1.24 MB
        39. screenshot-3.png
          screenshot-3.png
          56 kB
        40. TPROCC_Threadpool.html
          7 kB
        41. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_13_27_51.properties
          3 kB
        42. MDEV39497_THREADPOOL.tar.gz
          1.24 MB
        43. TPROCC_Threadpool-1.html
          7 kB
        44. GeneralLog.png
          GeneralLog.png
          55 kB
        45. TPROCC_GENERAL_LOG.html
          7 kB
        46. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_09_37_56.properties
          3 kB
        47. MDEV39497_GENERAL_LOG.tar.gz
          1.24 MB
        48. QueryCacheType.png
          QueryCacheType.png
          26 kB
        49. TPROCC_QueryCacheType.html
          7 kB
        50. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_08_40_15.properties
          3 kB
        51. MDEV39497_QUERY_CACHE_TYPE.tar.gz
          1.24 MB
        52. LOG_SLOW.png
          LOG_SLOW.png
          90 kB
        53. TPROCC_LOG_SLOW.html
          9 kB
        54. LOG_SLOW.png
          LOG_SLOW.png
          89 kB
        55. TPROCC_LOG_SLOW-1.html
          9 kB
        56. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_14_25_02.properties
          3 kB
        57. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_15_21_37.properties
          3 kB
        58. MDEV39497_LOG_SLOW.tar.gz
          2.55 MB
        59. IAHI.png
          IAHI.png
          56 kB
        60. TPROCC_INNODB_ADAPTIVE_HASH_INDEX.html
          7 kB
        61. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_10_35_59.properties
          3 kB
        62. MDEV39497_INNODB_ADAPTIVE_HASH_INDEX.tar.gz
          1.26 MB
        63. FLUSH_AT_COMMIT.png
          FLUSH_AT_COMMIT.png
          72 kB
        64. TPROCC_INNODB_FLUSH_LOG_AT_TRX_COMMIT.html
          8 kB
        65. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_30_19_17_59.properties
          3 kB
        66. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_30_20_14_11.properties
          3 kB
        67. MDEV39497_INNODB_FLUSH_LOG_AT_TRX_COMMIT.tar.gz
          2.59 MB
        68. PerformanceSchema.png
          PerformanceSchema.png
          56 kB
        69. TPROCC_PERFORMANCE_SCHEMA.html
          7 kB
        70. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_30_18_20_27.properties
          3 kB
        71. PERFORMANCE_SCHEMA.tar.gz
          1.24 MB
        72. PERFORMANCE_SCHEMA_VARIANTS.png
          PERFORMANCE_SCHEMA_VARIANTS.png
          98 kB
        73. MDEV39497_enable_pfs.sql.png
          MDEV39497_enable_pfs.sql.png
          24 kB
        74. TPROCC_PERFORMANCE_SCHEMA_VARIANTS.html
          9 kB
        75. MDEV39497_enable_pfs.sql
          0.9 kB
        76. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_20_47_34.properties
          4 kB
        77. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_29_19_51_27.properties
          3 kB
        78. MDEV39497_PERFORMANCE_SCHEMA_VARIANTS.tar.gz
          3.90 MB
        79. CPU_BINDINGS.png
          CPU_BINDINGS.png
          73 kB
        80. TPROCC_CPU_Bindings.html
          8 kB
        81. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_28_21_44_41.properties
          3 kB
        82. hammerdb-tprocc_TAF_AUTO_GEN_2026_8_28_19_07_40.properties
          3 kB
        83. MDEV39497_CPU_BINDINGS.tar.gz
          2.54 MB
        84. MDEV39487_requests_batch_1.sh
          7 kB
        85. BaseVsBinlogVsBinlogWithReplica.png
          BaseVsBinlogVsBinlogWithReplica.png
          74 kB
        86. BaseVsBinlogVsBinlogWithReplica.png
          BaseVsBinlogVsBinlogWithReplica.png
          74 kB
        87. TPROCC_BINLOG_ATTACHED_REPLICA.html
          8 kB
        88. hammerdb-tprocc_TAF_AUTO_GEN_2026_9_3_19_42_13.properties
          3 kB
        89. MDEV39497_BINLOG_REPLICA_ATTACHED.taf.gz
          1.22 MB
        90. ShowSlaveStatus.txt
          11 kB
        91. replication.sql.txt
          0.9 kB
        92. MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_SYNC.png
          MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_SYNC.png
          70 kB
        93. TPROCC_MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_SYNC.html
          8 kB
        94. hammerdb-tprocc_TAF_AUTO_GEN_2026_9_3_23_02_11.properties
          3 kB
        95. MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_SYNC.taf.gz
          1.27 MB
        96. MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_COMMIT.png
          MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_COMMIT.png
          81 kB
        97. TPROCC_MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_COMMIT.html
          8 kB
        98. hammerdb-tprocc_TAF_AUTO_GEN_2026_9_3_21_29_25.properties
          3 kB
        99. MDEV39497_BINLOG_REPLICA_SEMI_SYNC_AFTER_COMMIT.taf.gz
          1.27 MB
        100. BaselineRound2.png
          BaselineRound2.png
          47 kB
        101. MDEV39497_BASELINE.tar-1.gz
          143 kB
        102. DoubleWriteOffRound2.png
          DoubleWriteOffRound2.png
          63 kB
        103. MDEV39497_DOUBLEWRITE_OFF.tar.gz
          281 kB
        104. UTF8MB4_UTF8MB3_LATIN1_round2.png
          UTF8MB4_UTF8MB3_LATIN1_round2.png
          95 kB
        105. MDEV39497_UTF8MB4_vs_UTF8MB3_vs_LATIN1.tar.gz
          428 kB
        106. PERFORMANCE_SCHEMA_ON_round2.png
          PERFORMANCE_SCHEMA_ON_round2.png
          60 kB
        107. MDEV39497_PERFORMANCE_SCHEMA_ON.tar.gz
          286 kB
        108. _PERFORMANCE_SCHEMA_MED_round2.png
          _PERFORMANCE_SCHEMA_MED_round2.png
          71 kB
        109. MDEV39497_PERFORMANCE_SCHEMA_MED.tar.gz
          287 kB
        110. screenshot-4.png
          screenshot-4.png
          70 kB
        111. enablePfsSql.png
          enablePfsSql.png
          25 kB
        112. MDEV39497_PERFORMANCE_SCHEMA_FULL.tar.gz
          290 kB
        113. PFS_ALL_round_2.png
          PFS_ALL_round_2.png
          120 kB
        114. MDEV39497_PERFORMANCE_SCHEMA_ALL.tar.gz
          599 kB
        115. BinLog_WALs_round2.png
          BinLog_WALs_round2.png
          95 kB
        116. MDEV39497_BINLOG_PLUS_WALS.tar.gz
          426 kB
        117. ReplicaAttached_round2.png
          ReplicaAttached_round2.png
          136 kB
        118. MDEV39497_BIN_LOG_ATTACHED_REPLICANT.tar.gz
          713 kB
        119. binlog_min_round2.png
          binlog_min_round2.png
          119 kB
        120. MDEV39497_BINLOG_MIN.tar.gz
          566 kB
        121. binlog_min_noblob_round_2.png
          binlog_min_noblob_round_2.png
          119 kB
        122. MDEV39497_BINLOG_NOBLOG.tar.gz
          569 kB
        123. binlog_sync_round_2.png
          binlog_sync_round_2.png
          118 kB
        124. MDEV39497_BINLOG_SYNC.tar.gz
          567 kB
        125. binlog_wals_isolation_round_2.png
          binlog_wals_isolation_round_2.png
          91 kB
        126. MDEV39497_BINLOG_WALS_TRX_COMMIT_LEVELS.tar.gz
          438 kB
        127. threadpool_round_2.png
          threadpool_round_2.png
          58 kB
        128. MDEV39497_THREADPOOL.tar-1.gz
          287 kB
        129. flush_log_at_trx_commit_round_2.png
          flush_log_at_trx_commit_round_2.png
          93 kB
        130. MDEV39497_FLUSH_TRX_COMMIT.tar.gz
          428 kB
        131. IAHI_round2.png
          IAHI_round2.png
          61 kB
        132. MDEV39497_ADAPTIVE_HASH_INDEX.tar.gz
          286 kB
        133. QueryCacheType_round2.png
          QueryCacheType_round2.png
          59 kB
        134. MDEV39497_QUERY_CACHE_TYPE.tar-1.gz
          286 kB
        135. isolation_round_2.png
          isolation_round_2.png
          117 kB
        136. MDEV39497_ISOLATION_LEVELS.tar.gz
          643 kB
        137. binlog_isolation_round_2.png
          binlog_isolation_round_2.png
          111 kB
        138. MDEV39497_BIN_LOG_ISOLATION.tar.gz
          579 kB
        139. LOG_SLOW_round_2.png
          LOG_SLOW_round_2.png
          98 kB
        140. MDEV39497_SLOW_LOG_QUERY_001.tar.gz
          430 kB
        141. GeneralLog_round_2.png
          GeneralLog_round_2.png
          61 kB
        142. GeneralLog_round_2.png
          GeneralLog_round_2.png
          60 kB
        143. MDEV39497_GENERAL_LOG.tar-1.gz
          286 kB
        144. CPU_BINDINGS_round_2.png
          CPU_BINDINGS_round_2.png
          54 kB
        145. MDEV39497_CPU_AFFINITY_SETTINGS.tar.gz
          722 kB
        146. ssl_round_2.png
          ssl_round_2.png
          54 kB
        147. tprocc_ssl_round_2.png
          tprocc_ssl_round_2.png
          77 kB
        148. BINLOG_RPL_SEMI_SYNC_MASTER_ENABLED.png
          BINLOG_RPL_SEMI_SYNC_MASTER_ENABLED.png
          58 kB
        149. MDEV39497_BINLOG_RPL_SEMI_SYNC_MASTER_ENABLED.tar.gz
          281 kB
        150. after-sync.png
          after-sync.png
          59 kB
        151. MDEV39497_BINLOG_RPL_SEMI_SYNC_MASTER_WAIT_POINT_AFTER_COMMIT.tar.gz
          281 kB
        152. sync-after.png
          sync-after.png
          58 kB
        153. MDEV39497_BINLOG_RPL_SEMI_SYNC_MASTER_WAIT_POINT_AFTER_SYNC.tar.gz
          281 kB
        154. ssl_round_2.png
          ssl_round_2.png
          40 kB
        155. ssl_taf_props.png
          ssl_taf_props.png
          84 kB
        156. tprocc-config.png
          tprocc-config.png
          34 kB
        157. tprocc_client_connect_ssl.png
          tprocc_client_connect_ssl.png
          51 kB
        158. MDEV39497_SSL.tar.gz
          287 kB

        Activity

          People

            jeb Jonathan Jeb Miller
            jeb Jonathan Jeb Miller
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.