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