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