When a table is accessed by an index, "pages_accessed" in the "r_engine_stats" of ANALYZE FORMAT=JSON output displays suspiciously large numbers. See the test case attached and compare pages_accessed=14 for full table scan against pages_accessed=2003 for an access by index.
I think that we need mtr test coverage of pages_accessed, starting from something simple, such as ANALYZE FORMAT=JSON SELECT * FROM empty_table, which should access 1 page. When I was debugging the test case that I posted to MDEV-29151 yesterday, I noticed that SELECT * FROM t1 LIMIT 1 would incorrectly report accessing 3 pages, although InnoDB only incremented the thread-local counter by 1.
Marko Mäkelä
added a comment - I think that we need mtr test coverage of pages_accessed , starting from something simple, such as ANALYZE FORMAT=JSON SELECT * FROM empty_table , which should access 1 page. When I was debugging the test case that I posted to MDEV-29151 yesterday, I noticed that SELECT * FROM t1 LIMIT 1 would incorrectly report accessing 3 pages, although InnoDB only incremented the thread-local counter by 1.
It looks like the slow query log has wrong data, too. So the cause is MDEV-31558.
Sergei Petrunia
added a comment - - edited Is it ANALYZE that causes the problem? Or its "source" data that is printed into the slow query log?
I take the attached testcase, add printing to slow query log:
--- /tmp/innodb-pages-accessed.test 2023-09-29 12:29:11.591509426 +0300
+++ main/_a1.test 2023-09-29 11:51:57.407542018 +0300
@@ -19,6 +19,8 @@
insert into domains values (1, 'ab'),(2, 'ac'),(3, 'ad'), (4, 'ba'), (5, 'bb'),
(6, 'be'), (7, 'ca'), (8, 'cb'), (9, 'cc'), (10, 'cd');
+set log_slow_verbosity=engine;
+set long_query_time=0;
--echo # Creating initial dataset...
set unique_checks=0, foreign_key_checks=0;
insert into t1
run the test and see
# Pages_accessed: 32 Pages_read: 0 Pages_updated: 0 Old_rows_read: 0
# Pages_read_time: 0.0000 Engine_time: 31.0940
...
# Pages_accessed: 2003 Pages_read: 0 Pages_updated: 0 Old_rows_read: 0
# Pages_read_time: 0.0000 Engine_time: 15.3070
...
# Pages_accessed: 2003 Pages_read: 0 Pages_updated: 0 Old_rows_read: 0
# Pages_read_time: 0.0000 Engine_time: 15.3070
It looks like the slow query log has wrong data, too. So the cause is MDEV-31558 .
I debugged this a little deeper, this time, using ./mtr --rr and rr replay. It looks like for the last ANALYZE TABLE statement the counter is indeed being incremented that many times by buf_page_get_low(), and it is being reset at the start of the statement:
10.6 52e7016248d3e3f80c6a912ddc0399a15d868efc
Thread 4 hit Hardware watchpoint 6: -location hs.pages_accessed
Old value = 2005
New value = 0
0x0000561c79cac77e in memset (__len=56, __ch=0, __dest=0x7fa0800c13b0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:59
#0 0x0000561c79cac77e in memset (__len=56, __ch=0, __dest=0x7fa0800c13b0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:59
#1 ha_handler_stats::reset (this=0x7fa0800c13b0) at /mariadb/10.6/sql/ha_handler_stats.h:37
#2 handler::ha_handler_stats_reset (this=<optimized out>) at /mariadb/10.6/sql/handler.h:4873
#3 TABLE::init (this=0x7fa0800bfb08, thd=thd@entry=0x7fa080000c68, tl=tl@entry=0x7fa08001da90) at /mariadb/10.6/sql/table.cc:5781
#4 0x0000561c79afc922 in open_table (thd=thd@entry=0x7fa080000c68, table_list=table_list@entry=0x7fa08001da90, ot_ctx=ot_ctx@entry=0x7fa08de42910) at /mariadb/10.6/sql/sql_base.cc:2156
prelocking_strategy=prelocking_strategy@entry=0x7fa08de42a00) at /mariadb/10.6/sql/sql_base.cc:5314
#8 0x0000561c79baa5b5 in open_and_lock_tables (flags=0, derived=true, tables=0x7fa08001da90, thd=0x7fa080000c68) at /mariadb/10.6/sql/sql_base.h:512
#9 execute_sqlcom_select (thd=thd@entry=0x7fa080000c68, all_tables=0x7fa08001da90) at /mariadb/10.6/sql/sql_parse.cc:6206
#10 0x0000561c79bb6906 in mysql_execute_command (thd=thd@entry=0x7fa080000c68, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /mariadb/10.6/sql/sql_parse.cc:3961
#11 0x0000561c79bb7c73 in mysql_parse (thd=0x7fa080000c68, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at /mariadb/10.6/sql/sql_parse.cc:8050
#12 0x0000561c79bb9892 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7fa080000c68,
packet=packet@entry=0x7fa08008ccf9 "analyze format=json\nSELECT SQL_NO_CACHE `cnk`, `domain`\nFROM t1\nFORCE INDEX(domain)\nWHERE `domain` = 'be' AND status = 1 AND\n(`start_date`= '2022-07-18 00:00:00' OR `end_date` = '2022-07-18 00:00:00'"..., packet_length=packet_length@entry=214, blocking=blocking@entry=true) at /mariadb/10.6/sql/sql_parse.cc:1995
It turns out that this last statement (which will report pages_accessed as 2,003) will actually invoke row_search_mvcc() 1,001 times.
If I set breakpoints on ha_handler_stats::reset() and row_search_mvcc(), I can see that the first statement (which reported 32 pages accessed) invoked row_search_mvcc() 10,001 times.
The second statement with FORCE INDEX(active_epims) reports 2,005 pages accessed after invoking row_search_mvcc() 1,001 times.
The third statement with FORCE INDEX(domain) reports 2,003 pages accessed after invoking row_search_mvcc() 1,001 times.
I had already filed MDEV-31589 for the order-of-2 difference during secondary index lookup.
I assume that handler::ha_index_next_same() is executing an index range scan and not repetitive secondary index lookups. It looks like InnoDB could be missing some cursor optimization here. In MDEV-31577, monty decided not to count pages accessed as a result of restoring the persistent cursor position when the shortcut is successful.
Marko Mäkelä
added a comment - - edited I debugged this a little deeper, this time, using ./mtr --rr and rr replay . It looks like for the last ANALYZE TABLE statement the counter is indeed being incremented that many times by buf_page_get_low() , and it is being reset at the start of the statement:
10.6 52e7016248d3e3f80c6a912ddc0399a15d868efc
Thread 4 hit Hardware watchpoint 6: -location hs.pages_accessed
Old value = 2005
New value = 0
0x0000561c79cac77e in memset (__len=56, __ch=0, __dest=0x7fa0800c13b0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:59
59 return __builtin___memset_chk (__dest, __ch, __len,
2: x/i $pc
=> 0x561c79cac77e <_ZN5TABLE4initEP3THDP10TABLE_LIST+574>: vmovdqu %ymm0,0x48(%rdi)
(rr) bt
#0 0x0000561c79cac77e in memset (__len=56, __ch=0, __dest=0x7fa0800c13b0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:59
#1 ha_handler_stats::reset (this=0x7fa0800c13b0) at /mariadb/10.6/sql/ha_handler_stats.h:37
#2 handler::ha_handler_stats_reset (this=<optimized out>) at /mariadb/10.6/sql/handler.h:4873
#3 TABLE::init (this=0x7fa0800bfb08, thd=thd@entry=0x7fa080000c68, tl=tl@entry=0x7fa08001da90) at /mariadb/10.6/sql/table.cc:5781
#4 0x0000561c79afc922 in open_table (thd=thd@entry=0x7fa080000c68, table_list=table_list@entry=0x7fa08001da90, ot_ctx=ot_ctx@entry=0x7fa08de42910) at /mariadb/10.6/sql/sql_base.cc:2156
#5 0x0000561c79aff55d in open_and_process_table (ot_ctx=0x7fa08de42910, has_prelocking_list=<optimized out>, prelocking_strategy=<optimized out>, flags=<optimized out>, counter=<optimized out>,
tables=0x7fa08001da90, thd=0x7fa080000c68) at /mariadb/10.6/sql/sql_base.cc:3857
#6 open_tables (thd=thd@entry=0x7fa080000c68, options=@0x7fa0800061a8: {m_options = DDL_options_st::OPT_NONE}, start=start@entry=0x7fa08de42998, counter=counter@entry=0x7fa08de429ac, flags=flags@entry=0,
prelocking_strategy=prelocking_strategy@entry=0x7fa08de42a00) at /mariadb/10.6/sql/sql_base.cc:4341
#7 0x0000561c79b00256 in open_and_lock_tables (thd=thd@entry=0x7fa080000c68, options=<optimized out>, tables=<optimized out>, tables@entry=0x7fa08001da90, derived=derived@entry=true, flags=flags@entry=0,
prelocking_strategy=prelocking_strategy@entry=0x7fa08de42a00) at /mariadb/10.6/sql/sql_base.cc:5314
#8 0x0000561c79baa5b5 in open_and_lock_tables (flags=0, derived=true, tables=0x7fa08001da90, thd=0x7fa080000c68) at /mariadb/10.6/sql/sql_base.h:512
#9 execute_sqlcom_select (thd=thd@entry=0x7fa080000c68, all_tables=0x7fa08001da90) at /mariadb/10.6/sql/sql_parse.cc:6206
#10 0x0000561c79bb6906 in mysql_execute_command (thd=thd@entry=0x7fa080000c68, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /mariadb/10.6/sql/sql_parse.cc:3961
#11 0x0000561c79bb7c73 in mysql_parse (thd=0x7fa080000c68, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at /mariadb/10.6/sql/sql_parse.cc:8050
#12 0x0000561c79bb9892 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7fa080000c68,
packet=packet@entry=0x7fa08008ccf9 "analyze format=json\nSELECT SQL_NO_CACHE `cnk`, `domain`\nFROM t1\nFORCE INDEX(domain)\nWHERE `domain` = 'be' AND status = 1 AND\n(`start_date`= '2022-07-18 00:00:00' OR `end_date` = '2022-07-18 00:00:00'"..., packet_length=packet_length@entry=214, blocking=blocking@entry=true) at /mariadb/10.6/sql/sql_parse.cc:1995
It turns out that this last statement (which will report pages_accessed as 2,003) will actually invoke row_search_mvcc() 1,001 times.
If I set breakpoints on ha_handler_stats::reset() and row_search_mvcc() , I can see that the first statement (which reported 32 pages accessed) invoked row_search_mvcc() 10,001 times.
The second statement with FORCE INDEX(active_epims) reports 2,005 pages accessed after invoking row_search_mvcc() 1,001 times.
The third statement with FORCE INDEX(domain) reports 2,003 pages accessed after invoking row_search_mvcc() 1,001 times.
I had already filed MDEV-31589 for the order-of-2 difference during secondary index lookup.
I assume that handler::ha_index_next_same() is executing an index range scan and not repetitive secondary index lookups. It looks like InnoDB could be missing some cursor optimization here. In MDEV-31577 , monty decided not to count pages accessed as a result of restoring the persistent cursor position when the shortcut is successful.
I assume that handler::ha_index_next_same() is executing an index range scan and not repetitive secondary index lookups
Correct. it's a single-table select.
Sergei Petrunia
added a comment - I assume that handler::ha_index_next_same() is executing an index range scan and not repetitive secondary index lookups
Correct. it's a single-table select.
People
Vladislav Lesin
Oleg Smirnov
Votes:
0Vote for this issue
Watchers:
4Start 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.
{"report":{"fcp":807.3000001907349,"ttfb":177.7000002861023,"pageVisibility":"visible","entityId":125404,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"42a16e74-fcff-4b08-9824-f475b69df864","navigationType":0,"readyForUser":884.5,"redirectCount":0,"resourceLoadedEnd":1138.4000000953674,"resourceLoadedStart":182.59999990463257,"resourceTiming":[{"duration":151.60000038146973,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":182.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":182.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":334.2000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":151.59999990463257,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/2bf333562ca6724060a9d5f1535471f6/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":182.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":182.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":334.5,"responseStart":0,"secureConnectionStart":0},{"duration":160.60000038146973,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":183.09999990463257,"connectEnd":183.09999990463257,"connectStart":183.09999990463257,"domainLookupEnd":183.09999990463257,"domainLookupStart":183.09999990463257,"fetchStart":183.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":183.09999990463257,"responseEnd":343.7000002861023,"responseStart":343.59999990463257,"secureConnectionStart":183.09999990463257},{"duration":225.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/2bf333562ca6724060a9d5f1535471f6/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":183.2000002861023,"connectEnd":183.2000002861023,"connectStart":183.2000002861023,"domainLookupEnd":183.2000002861023,"domainLookupStart":183.2000002861023,"fetchStart":183.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":183.2000002861023,"responseEnd":408.7000002861023,"responseStart":408.7000002861023,"secureConnectionStart":183.2000002861023},{"duration":229.19999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":183.40000009536743,"connectEnd":183.40000009536743,"connectStart":183.40000009536743,"domainLookupEnd":183.40000009536743,"domainLookupStart":183.40000009536743,"fetchStart":183.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":183.40000009536743,"responseEnd":412.59999990463257,"responseStart":412.59999990463257,"secureConnectionStart":183.40000009536743},{"duration":229.40000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":183.59999990463257,"connectEnd":183.59999990463257,"connectStart":183.59999990463257,"domainLookupEnd":183.59999990463257,"domainLookupStart":183.59999990463257,"fetchStart":183.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":183.59999990463257,"responseEnd":413,"responseStart":413,"secureConnectionStart":183.59999990463257},{"duration":229.69999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":183.80000019073486,"connectEnd":183.80000019073486,"connectStart":183.80000019073486,"domainLookupEnd":183.80000019073486,"domainLookupStart":183.80000019073486,"fetchStart":183.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":183.80000019073486,"responseEnd":413.5,"responseStart":413.5,"secureConnectionStart":183.80000019073486},{"duration":302.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":184,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":184,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":486.80000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":229.69999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":184.2000002861023,"connectEnd":184.2000002861023,"connectStart":184.2000002861023,"domainLookupEnd":184.2000002861023,"domainLookupStart":184.2000002861023,"fetchStart":184.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":184.2000002861023,"responseEnd":413.90000009536743,"responseStart":413.90000009536743,"secureConnectionStart":184.2000002861023},{"duration":302.69999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":184.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":184.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":487,"responseStart":0,"secureConnectionStart":0},{"duration":230,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":184.40000009536743,"connectEnd":184.40000009536743,"connectStart":184.40000009536743,"domainLookupEnd":184.40000009536743,"domainLookupStart":184.40000009536743,"fetchStart":184.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":184.40000009536743,"responseEnd":414.40000009536743,"responseStart":414.40000009536743,"secureConnectionStart":184.40000009536743},{"duration":481,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":190.09999990463257,"connectEnd":190.09999990463257,"connectStart":190.09999990463257,"domainLookupEnd":190.09999990463257,"domainLookupStart":190.09999990463257,"fetchStart":190.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":190.09999990463257,"responseEnd":671.0999999046326,"responseStart":671.0999999046326,"secureConnectionStart":190.09999990463257},{"duration":921.1999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":192.40000009536743,"connectEnd":192.40000009536743,"connectStart":192.40000009536743,"domainLookupEnd":192.40000009536743,"domainLookupStart":192.40000009536743,"fetchStart":192.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":192.40000009536743,"responseEnd":1113.5999999046326,"responseStart":1113.5999999046326,"secureConnectionStart":192.40000009536743},{"duration":231.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":514.9000000953674,"connectEnd":514.9000000953674,"connectStart":514.9000000953674,"domainLookupEnd":514.9000000953674,"domainLookupStart":514.9000000953674,"fetchStart":514.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":514.9000000953674,"responseEnd":746.4000000953674,"responseStart":746.4000000953674,"secureConnectionStart":514.9000000953674},{"duration":377.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2cib/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":760.9000000953674,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":760.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1138.4000000953674,"responseStart":0,"secureConnectionStart":0}],"fetchStart":1,"domainLookupStart":1,"domainLookupEnd":1,"connectStart":1,"connectEnd":1,"requestStart":7,"responseStart":178,"responseEnd":193,"domLoading":181,"domInteractive":1149,"domContentLoadedEventStart":1149,"domContentLoadedEventEnd":1193,"domComplete":1701,"loadEventStart":1701,"loadEventEnd":1701,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1115.5},{"name":"bigPipe.sidebar-id.end","time":1116.3000001907349},{"name":"bigPipe.activity-panel-pipe-id.start","time":1116.4000000953674},{"name":"bigPipe.activity-panel-pipe-id.end","time":1119.2000002861023},{"name":"activityTabFullyLoaded","time":1207.7000002861023}],"measures":[],"correlationId":"93cb0fc777826f","effectiveType":"4g","downlink":9,"rtt":0,"serverDuration":113,"dbReadsTimeInMs":16,"dbConnsTimeInMs":25,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
I think that we need mtr test coverage of pages_accessed, starting from something simple, such as ANALYZE FORMAT=JSON SELECT * FROM empty_table, which should access 1 page. When I was debugging the test case that I posted to
MDEV-29151yesterday, I noticed that SELECT * FROM t1 LIMIT 1 would incorrectly report accessing 3 pages, although InnoDB only incremented the thread-local counter by 1.