Bug #14902 ANALYZE TABLE fails to recognize up-to-date tables
| Submitted: | 12 Nov 2005 18:26 | Modified: | 9 Dec 2005 0:31 |
|---|---|---|---|
| Reporter: | Peter Schäfer | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0.17-BK, 5.0.15 | OS: | Linux (Linux, Windows XP) |
| Assigned to: | Sergey Vlasenko | CPU Architecture: | Any |
[13 Nov 2005 11:29]
Valeriy Kravchuk
Thank you for a problem report. Verified just as described on 5.0.17-BK (ChangeSet@1.1967, 2005-11-11 13:39:46+04:00,...) on Linux:
mysql> create table test (a mediumtext, fulltext key key1(a)) charset utf8 collate
-> utf8_general_ci;
Query OK, 0 rows affected (0,01 sec)
mysql> insert into test values('Hello');
Query OK, 1 row affected (0,00 sec)
mysql> analyze table test;
+-----------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-----------+---------+----------+----------+
| test.test | analyze | status | OK |
+-----------+---------+----------+----------+
1 row in set (0,00 sec)
mysql> analyze table test;
+-----------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-----------+---------+----------+----------+
| test.test | analyze | status | OK |
+-----------+---------+----------+----------+
1 row in set (0,00 sec)
mysql> create table test2 as select * from test;
Query OK, 1 row affected (0,01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> analyze table test2;
+------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------+---------+----------+----------+
| test.test2 | analyze | status | OK |
+------------+---------+----------+----------+
1 row in set (0,00 sec)
mysql> analyze table test2;
+------------+---------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------+---------+----------+-----------------------------+
| test.test2 | analyze | status | Table is already up to date |
+------------+---------+----------+-----------------------------+
1 row in set (0,00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.17 |
+-----------+
1 row in set (0,00 sec)
And in the manual one may read (http://dev.mysql.com/doc/refman/5.0/en/analyze-table.html):
"If the table has not changed since the last ANALYZE TABLE statement, the table is not analyzed again."
Looks like a bug or the behaviour that should be explicitly described in the manual.
[23 Nov 2005 15:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/32604
[1 Dec 2005 20:52]
Sergey Vlasenko
Fix is available in 5.0.17 & 5.1.4-alpha
[9 Dec 2005 0:31]
Paul DuBois
Noted in 5.0.17, 5.1.4 changelogs.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.040 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: ANALYZE TABLE fails to recognize if a table is up-to-date. Repeated calls to ANALYZE TABLE will rebuild the statistics, even if the table contents was not modified. Presence of a fulltext index is a prerequisite. How to repeat: create table test (a mediumtext, fulltext key key1(a)) charset utf8 collate utf8_general_ci insert into test values ('Hello') analyze table test Table , Op , Msg_type, Msg_text 'jose.test', 'analyze', 'status', 'OK' analyze table test Table , Op , Msg_type, Msg_text 'jose.test', 'analyze', 'status', 'OK' analyze table test Table , Op , Msg_type, Msg_text 'jose.test', 'analyze', 'status', 'OK' etc... Suggested fix: ANALYZE TABLE must recognize if a table is up-to-date and not build statistics