[MDEV-130] Counters for Index Condition Pushdown Created: 2012-01-31  Updated: 2012-02-23  Resolved: 2012-02-23

Status: Closed
Project: MariaDB Server
Component/s: None
Fix Version/s: 5.3.5

Type: Task Priority: Major
Reporter: Sergei Petrunia Assignee: Oleksandr Byelkin
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
blocks MDEV-141 MariaDB 5.3.5 release Closed

 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



 Comments   
Comment by Sergei Petrunia [ 2012-01-31 ]

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
}

Comment by Sergei Petrunia [ 2012-01-31 ]

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

Generated at Thu Feb 08 06:26:29 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.