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

SAMU-64 Allow administrators to enable or disable parallel replication on a per-table basis

    XMLWordPrintable

Details

    • New Feature
    • Status: Needs Feedback (View Workflow)
    • Major
    • Resolution: Unresolved
    • 11.8
    • Replication
    • None

    Description

      SAMU-64 Allow administrators to enable or disable parallel replication on a per-table basis

      Per-domain dedicated thread for processing ordered transactions. The
      thread is reserved from the total number of domain threads (controlled
      by slave_parallel_threads and slave_domain_parallel_threads). Whether
      the event goes to ordered thread depends on FL_ALLOW_PARALLEL flag as
      well as several other conditions. FL_ALLOW_PARALLEL is passed from
      master and is set for the event depending on master configuration
      directives. To allow dedicated slave on server one must enable it
      explicitly with configuration directive:
       
        set global slave_ordered_thread= 1;
       
      Originally it was controlled by skip_parallel_replication session
      variable which can be changed per-statement. This patch adds several
      more directives to control it on per-schema and per-table levels:
       
        parallel_do_db
        parallel_do_table
        parallel_ignore_db
        parallel_ignore_table
        parallel_wild_do_table
        parallel_wild_ignore_table
       
      Each directive is comma-separated list of fully-qualified table
      names. Spaces after comma are ignored (but not before).
       
      "Table" directives take precedence over "db" directives. "Do"
      directives take precedence over "ignore" directives. "Wild" directives
      are checked if "do" and "ignore" directives did not match.
       
      If none of the above directives present everything is considered
      parallel. If any of the above directives present and the table did not
      match anything in the lists it is considered ordered.
       
      Examples:
       
        set @@global.parallel_do_db=	   "db_parallel";
        set @@global.parallel_ignore_db= "db_serial";
        set global parallel_do_table=  "db_serial.t3,  db_serial.t1";
        set global parallel_wild_ignore_table= "db_parallel.non_parallel_%"
       
      Normal behaviour of ordered transaction is before start to wait any of
      prior transactions to commit: they get into different commit
      groups. But since all the ordered transactions (within one domain) go
      to a single thread we may avoid that restriction with this directive
      on slave:
       
        set global slave_ordered_dont_wait= 1;
       
      When set events without explicit FL_WAITED flag going to ordered
      thread nonetheless accept optimistic speculation. I.e. they get into
      same commit group with parallel events: ordered event is executed in
      parallel with parallel events.
      

      Attachments

        Issue Links

          Activity

            People

              knielsen Kristian Nielsen
              midenok Aleksey Midenkov
              Votes:
              1 Vote for this issue
              Watchers:
              8 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.