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

Counters for Index Condition Pushdown

Details

    • Task
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 5.3.5
    • None
    • None

    Description

      We need counters to track Index Condition Pushdown. In particular, we need to track

      • how many times pushed-index-condition check was performed
      • how many times the check filtered out a record

      (Note: We had also an idea to change counters so that
      1. index tuple reads
      2. full record reads
      are counted separately. Implementation of that task does not kill the need
      for counters aimed specifically at index condition pushdown)

      Proposed counter names:

      Handler_pushed_index_cond_checks N
      Handler_pushed_index_cond_filtered N

      Implementation to filter a record

      • Every storage engine invokes ${engine_name}_idx_cond_func(). That function
        has access to SQL layer, so it should be easy for it to bump up counters.
      • Batched Key Access uses a different function. Will need to perform counting there, too.

      FYI: MySQL-5.6 has a feature called "InnoDB monitor" which exports there four counters:

      select name, count from information_schema.innodb_metrics where name like "icp%";
      name count
      icp_attempts 1
      icp_no_match 0
      icp_out_of_range 1
      icp_match 0

      grep for MONITOR_ICP in the source or look at user interface in:
      mysql-test/suite/innodb/t/innodb_monitor.test

      Attachments

        Issue Links

          Activity

            psergei Sergei Petrunia created issue -

            Typical function:

            ICP_RESULT index_cond_func_maria(void *arg)
            {
            ha_maria h= (ha_maria)arg;
            if (h->end_range)

            { if (h->compare_key2(h->end_range) > 0) return ICP_OUT_OF_RANGE; /* caller should return HA_ERR_END_OF_FILE already */ }

            //!! counting Handler_pushed_index_calls should be done here (that is: after out-of-range-check)
            return h->pushed_idx_cond->val_int() ? ICP_MATCH : ICP_NO_MATCH;
            //!! counting Handler_pushed_index_filtered should be done here if we got ICP_NO_MATCH
            }

            psergei Sergei Petrunia added a comment - Typical function: ICP_RESULT index_cond_func_maria(void *arg) { ha_maria h= (ha_maria )arg; if (h->end_range) { if (h->compare_key2(h->end_range) > 0) return ICP_OUT_OF_RANGE; /* caller should return HA_ERR_END_OF_FILE already */ } //!! counting Handler_pushed_index_calls should be done here (that is: after out-of-range-check) return h->pushed_idx_cond->val_int() ? ICP_MATCH : ICP_NO_MATCH; //!! counting Handler_pushed_index_filtered should be done here if we got ICP_NO_MATCH }

            Need also to check 5.6: they have some counters there. we need to be compatible.

            psergei Sergei Petrunia added a comment - Need also to check 5.6: they have some counters there. we need to be compatible.
            serg Sergei Golubchik made changes -
            Field Original Value New Value
            Workflow jira [ 10627 ] defaullt [ 10735 ]
            psergei Sergei Petrunia made changes -
            psergei Sergei Petrunia made changes -
            Fix Version/s 5.3.5 [ 10400 ]
            psergei Sergei Petrunia made changes -
            Assignee Rasmus Johansson [ ratzpo ] Sergei Petrunia [ psergey ]
            psergei Sergei Petrunia made changes -
            Description We need counters to track Index Condition Pushdown. In particular, we need to track
            - how many times pushed-index-condition check was performed
            - how many times the check filtered out a record

            (Note: We had also an idea to change counters so that
             1. index tuple reads
             2. full record reads
            are counted separately. Implementation of that task does not kill the need
            for counters aimed specifically at index condition pushdown)

            Proposed counter names:

              Handler_pushed_index_calls N
              Handler_pushed_index_filtered N

            Implementation to filter a record
            - Every storage engine invokes ${engine_name}_idx_cond_func(). That function
              has access to SQL layer, so it should be easy for it to bump up counters.

            - Batched Key Access uses a different function. Will need to perform counting there, too.
            We need counters to track Index Condition Pushdown. In particular, we need to track
            - how many times pushed-index-condition check was performed
            - how many times the check filtered out a record

            (Note: We had also an idea to change counters so that
             1. index tuple reads
             2. full record reads
            are counted separately. Implementation of that task does not kill the need
            for counters aimed specifically at index condition pushdown)

            Proposed counter names:

              Handler_pushed_index_cond_checks N
              Handler_pushed_index_cond_filtered N

            Implementation to filter a record
            - Every storage engine invokes ${engine_name}_idx_cond_func(). That function
              has access to SQL layer, so it should be easy for it to bump up counters.

            - Batched Key Access uses a different function. Will need to perform counting there, too.
            sanja Oleksandr Byelkin made changes -
            Assignee Sergei Petrunia [ psergey ] Oleksandr Byelkin [ sanja ]
            sanja Oleksandr Byelkin made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            psergei Sergei Petrunia made changes -
            Description We need counters to track Index Condition Pushdown. In particular, we need to track
            - how many times pushed-index-condition check was performed
            - how many times the check filtered out a record

            (Note: We had also an idea to change counters so that
             1. index tuple reads
             2. full record reads
            are counted separately. Implementation of that task does not kill the need
            for counters aimed specifically at index condition pushdown)

            Proposed counter names:

              Handler_pushed_index_cond_checks N
              Handler_pushed_index_cond_filtered N

            Implementation to filter a record
            - Every storage engine invokes ${engine_name}_idx_cond_func(). That function
              has access to SQL layer, so it should be easy for it to bump up counters.

            - Batched Key Access uses a different function. Will need to perform counting there, too.
            We need counters to track Index Condition Pushdown. In particular, we need to track
            - how many times pushed-index-condition check was performed
            - how many times the check filtered out a record

            (Note: We had also an idea to change counters so that
             1. index tuple reads
             2. full record reads
            are counted separately. Implementation of that task does not kill the need
            for counters aimed specifically at index condition pushdown)

            Proposed counter names:

              Handler_pushed_index_cond_checks N
              Handler_pushed_index_cond_filtered N

            Implementation to filter a record
            - Every storage engine invokes ${engine_name}_idx_cond_func(). That function
              has access to SQL layer, so it should be easy for it to bump up counters.

            - Batched Key Access uses a different function. Will need to perform counting there, too.


            FYI: MySQL-5.6 has a feature called "InnoDB monitor" which exports there four counters:

            select name, count from information_schema.innodb_metrics where name like "icp%";
            name count
            icp_attempts 1
            icp_no_match 0
            icp_out_of_range 1
            icp_match 0

            grep for MONITOR_ICP in the source or look at user interface in:
            mysql-test/suite/innodb/t/innodb_monitor.test


            sanja Oleksandr Byelkin made changes -
            Status In Progress [ 3 ] Open [ 1 ]
            sanja Oleksandr Byelkin made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            sanja Oleksandr Byelkin made changes -
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow defaullt [ 10735 ] MariaDB v2 [ 45049 ]
            ratzpo Rasmus Johansson (Inactive) made changes -
            Workflow MariaDB v2 [ 45049 ] MariaDB v3 [ 65605 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 65605 ] MariaDB v4 [ 131901 ]

            People

              sanja Oleksandr Byelkin
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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