When EITS is enabled, ALTER TABLE ... ANALYZE PARTITION reads (and locks) all rows in the InnoDB table, even for a tiny partition. As a result, for huge tables it may work for hours and days and does not server the purpose. This does NOT happen without engine-independent persistent statistics enabled.
Consider this table:
MariaDB [test]> show create table tp\G
*************************** 1. row ***************************
Table: tp
Create Table: CREATE TABLE `tp` (
`id` int(11) DEFAULT NULL,
`c1` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE (`id`)
(PARTITION `p0` VALUES LESS THAN (10) ENGINE = InnoDB,
PARTITION `p1` VALUES LESS THAN MAXVALUE ENGINE = InnoDB)
1 row in set (0,00 sec)
MariaDB [test]> show table status like 'tp'\G
*************************** 1. row ***************************
Name: tp
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 9731209
Avg_row_length: 32
Data_length: 318619648
Max_data_length: 0
Index_length: 0
Data_free: 5242880
Auto_increment: NULL
Create_time: 2020-01-10 17:45:50
Update_time: 2020-01-14 10:39:57
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options: partitioned
Comment:
1 row in set (0,02 sec)
This is how long it takes to get statistics for the partition with just 9 rows:
MariaDB [test]> set session use_stat_tables='preferably';
Query OK, 0 rows affected (0,00 sec)
MariaDB [test]> alter table tp analyze partition p0;
+---------+---------+----------+-----------------------------------------+
| Table | Op | Msg_type | Msg_text |
+---------+---------+----------+-----------------------------------------+
| test.tp | analyze | status | Engine-independent statistics collected |
| test.tp | analyze | status | OK |
+---------+---------+----------+-----------------------------------------+
2 rows in set (17,33 sec)
MariaDB [test]> select count(*) from tp;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (5,89 sec)
MariaDB [test]> select count(*) from tp partition(p0);
+----------+
| count(*) |
+----------+
| 9 |
+----------+
1 row in set (0,00 sec)
In the INNODB STATUS output taken when this query runs we see:
...
---TRANSACTION 421521529651464, ACTIVE 10 sec fetching rows
mysql tables in use 2, locked 2
12335 lock struct(s), heap size 2105552, 6374971 row lock(s)
MySQL thread id 10, OS thread handle 140046871947008, query id 59 localhost root
alter table tp analyze partition p0
...
So, the statement that should access single partition with just 9 rows reads and locks all rows in the table. As a result it is totally useless, One can just run ANALYZE for the entire table with the same "costs".
Elena Stepanova
made changes -
2020-01-14 10:39
Field
Original Value
New Value
Fix Version/s
10.1
[ 16100
]
Fix Version/s
10.2
[ 14601
]
Assignee
Igor Babaev
[ igor
]
Julien Fritsch
made changes -
2020-04-21 08:55
Priority
Major
[ 3
]
Critical
[ 2
]
Julien Fritsch
made changes -
2020-07-15 06:09
Labels
eits nee
eits need_feedback
Sergei Petrunia
made changes -
2020-07-29 19:45
Assignee
Igor Babaev
[ igor
]
Sergei Petrunia
[ psergey
]
Sergei Petrunia
made changes -
2020-07-29 20:31
Fix Version/s
10.1.46
[ 24308
]
Fix Version/s
10.2.33
[ 24307
]
Fix Version/s
10.3.24
[ 24306
]
Fix Version/s
10.4.14
[ 24305
]
Fix Version/s
10.5.5
[ 24423
]
Fix Version/s
10.2
[ 14601
]
Fix Version/s
10.1
[ 16100
]
Resolution
Fixed
[ 1
]
Status
Open
[ 1
]
Closed
[ 6
]
Sergei Golubchik
made changes -
2021-12-06 21:50
Workflow
MariaDB v3
[ 102993
]
MariaDB v4
[ 157189
]
Michael Widenius
made changes -
2024-01-29 13:56
Assignee
Sergei Petrunia
[ psergey
]
Michael Widenius
[ monty
]
{"report":{"fcp":1548.1999998092651,"ttfb":437,"pageVisibility":"visible","entityId":82289,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"f12ec610-eec1-494c-83d4-a163b1e5631e","navigationType":0,"readyForUser":1617.8999996185303,"redirectCount":0,"resourceLoadedEnd":1207.5999994277954,"resourceLoadedStart":448.19999980926514,"resourceTiming":[{"duration":165.30000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":448.19999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":448.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":613.5,"responseStart":0,"secureConnectionStart":0},{"duration":165.39999961853027,"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":448.3999996185303,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":448.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":613.7999992370605,"responseStart":0,"secureConnectionStart":0},{"duration":564.3999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":448.69999980926514,"connectEnd":448.69999980926514,"connectStart":448.69999980926514,"domainLookupEnd":448.69999980926514,"domainLookupStart":448.69999980926514,"fetchStart":448.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":622.1999998092651,"responseEnd":1013.0999994277954,"responseStart":674.7999992370605,"secureConnectionStart":448.69999980926514},{"duration":758.6999998092651,"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":448.8999996185303,"connectEnd":448.8999996185303,"connectStart":448.8999996185303,"domainLookupEnd":448.8999996185303,"domainLookupStart":448.8999996185303,"fetchStart":448.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":622.3999996185303,"responseEnd":1207.5999994277954,"responseStart":678,"secureConnectionStart":448.8999996185303},{"duration":235.29999923706055,"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":449,"connectEnd":449,"connectStart":449,"domainLookupEnd":449,"domainLookupStart":449,"fetchStart":449,"redirectEnd":0,"redirectStart":0,"requestStart":622.6999998092651,"responseEnd":684.2999992370605,"responseStart":679.2999992370605,"secureConnectionStart":449},{"duration":235.5,"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":449.0999994277954,"connectEnd":449.0999994277954,"connectStart":449.0999994277954,"domainLookupEnd":449.0999994277954,"domainLookupStart":449.0999994277954,"fetchStart":449.0999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":631.2999992370605,"responseEnd":684.5999994277954,"responseStart":680.3999996185303,"secureConnectionStart":449.0999994277954},{"duration":235.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":449.3999996185303,"connectEnd":449.3999996185303,"connectStart":449.3999996185303,"domainLookupEnd":449.3999996185303,"domainLookupStart":449.3999996185303,"fetchStart":449.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":631.5999994277954,"responseEnd":685.0999994277954,"responseStart":681.7999992370605,"secureConnectionStart":449.3999996185303},{"duration":171.39999961853027,"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":449.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":449.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":620.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":235.19999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":449.69999980926514,"connectEnd":449.69999980926514,"connectStart":449.69999980926514,"domainLookupEnd":449.69999980926514,"domainLookupStart":449.69999980926514,"fetchStart":449.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":631.8999996185303,"responseEnd":684.8999996185303,"responseStart":681,"secureConnectionStart":449.69999980926514},{"duration":177.80000019073486,"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":449.8999996185303,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":449.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":627.6999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":236.5999994277954,"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":450,"connectEnd":450,"connectStart":450,"domainLookupEnd":450,"domainLookupStart":450,"fetchStart":450,"redirectEnd":0,"redirectStart":0,"requestStart":633.8999996185303,"responseEnd":686.5999994277954,"responseStart":683.1999998092651,"secureConnectionStart":450},{"duration":752.5,"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":450.79999923706055,"connectEnd":450.79999923706055,"connectStart":450.79999923706055,"domainLookupEnd":450.79999923706055,"domainLookupStart":450.79999923706055,"fetchStart":450.79999923706055,"redirectEnd":0,"redirectStart":0,"requestStart":861,"responseEnd":1203.2999992370605,"responseStart":1196.5,"secureConnectionStart":450.79999923706055},{"duration":754.3000001907349,"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":450.8999996185303,"connectEnd":450.8999996185303,"connectStart":450.8999996185303,"domainLookupEnd":450.8999996185303,"domainLookupStart":450.8999996185303,"fetchStart":450.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":1038.5,"responseEnd":1205.1999998092651,"responseStart":1201.1999998092651,"secureConnectionStart":450.8999996185303},{"duration":174.69999980926514,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1153.3999996185303,"connectEnd":1153.3999996185303,"connectStart":1153.3999996185303,"domainLookupEnd":1153.3999996185303,"domainLookupStart":1153.3999996185303,"fetchStart":1153.3999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":1297.0999994277954,"responseEnd":1328.0999994277954,"responseStart":1327.1999998092651,"secureConnectionStart":1153.3999996185303}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":221,"responseStart":437,"responseEnd":441,"domLoading":445,"domInteractive":1715,"domContentLoadedEventStart":1715,"domContentLoadedEventEnd":1785,"domComplete":2261,"loadEventStart":2262,"loadEventEnd":2262,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1664.0999994277954},{"name":"bigPipe.sidebar-id.end","time":1664.8999996185303},{"name":"bigPipe.activity-panel-pipe-id.start","time":1665.1999998092651},{"name":"bigPipe.activity-panel-pipe-id.end","time":1668.3999996185303},{"name":"activityTabFullyLoaded","time":1807.2999992370605}],"measures":[],"correlationId":"c63e07980327","effectiveType":"4g","downlink":9.8,"rtt":0,"serverDuration":126,"dbReadsTimeInMs":22,"dbConnsTimeInMs":33,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}