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

Aria engine horrible performance TRANSACTIONAL=1

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Minor
    • Resolution: Unresolved
    • 5.5.36, 10.0.9
    • 5.5
    • None
    • None
    • Debian-70-wheezy, 2xHDD in RAID1, 16GB Memory

    Description

      Hi Guys,

      im having issue with aria engine, ONLY when using TRANSACTIONAL=1, which is unfortunately the default setting it seems. Basically IO subsystem on the server gets exhausted completely and queries like

      SELECT * FROM "raw_stats_other" LIMIT 1 take eg. 200-600 seconds to return a row that has 30 bytes of data. Traffic is almost write-only with 5-10 concurrent writes at a time, with occassional reads. Each single write consist of "packed" write to 100 rows with ON DUPLICATE KEY UPDATE.

      The difference is so huge that when i switched the table to TRANSACTIONAL=0, the server behaved like there's no traffic at all.
      SELECT * FROM "raw_stats_other" LIMIT 1 time dropped from 200-600 seconds to just <0.05s.

      The problem isn't really the very bad performance, but lack of documentation. There should be some info about flushing strategy, and how TRANSACTIONAL=1 affects the IO (i don't know maybe that's how it's supposed to work as it's flushing every write to disk?). And most important, if there's a way of improving it or not. Is it not suitable for conventional HDD's and high write enviroments at all?

      While i have not much experience with mariadb and considering lack of documentation i thought at first that... the engine is just broken which is a shame, because when properly configured it works very nicely... where there's not a single line of info of how badly transactional options i affecting write performance and how it really works.

      I marked this issue as critical, because i think many people would drop the DB altogether thinking it's broken because lack of information.

      CREATE TABLE `raw_stats_other` (
        `raw_stats_lookup_id` int(11) NOT NULL,
        `attrib_id` smallint(6) NOT NULL,
        `date` date NOT NULL,
        `raw_stats_value_id` int(255) NOT NULL,
        `impressions` int(11) NOT NULL,
        `_cf` int(11) NOT NULL,
        UNIQUE KEY `tag_stats_lookup_id` (`date`,`raw_stats_lookup_id`,`attrib_id`,`raw_stats_value_id`) USING BTREE
      ) ENGINE=Aria DEFAULT CHARSET=utf8 TRANSACTIONAL=1
      /*!50100 PARTITION BY HASH (TO_DAYS(date) DIV 10)
      PARTITIONS 5 */;

      Attachments

        Activity

          People

            monty Michael Widenius
            pslawek83 Slawomir Pryczek
            Votes:
            2 Vote for this issue
            Watchers:
            9 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.