Bug #39955 | SELECT on INFORMATION_SCHEMA.GLOBAL_VARIABLES takes too long | ||
---|---|---|---|
Submitted: | 9 Oct 2008 15:52 | Modified: | 10 Dec 2008 20:35 |
Reporter: | Oli Sennhauser | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Information schema | Severity: | S2 (Serious) |
Version: | 5.1.27-ndb-6.3.17-innodb-log, 5.1-bzr | OS: | Any |
Assigned to: | Sergei Glukhov | CPU Architecture: | Any |
[9 Oct 2008 15:52]
Oli Sennhauser
[9 Oct 2008 18:56]
Valeriy Kravchuk
Thank you for a problem report. I can not repeat this "concistency" of slow execution with 5.1.28 on Windows, for example: mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = ' hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | toshiba-user | +---------------+----------------+ 1 row in set (0.55 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = ' hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | toshiba-user | +---------------+----------------+ 1 row in set (0.14 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = ' hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | toshiba-user | +---------------+----------------+ 1 row in set (0.11 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = ' hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | toshiba-user | +---------------+----------------+ 1 row in set (0.09 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = ' hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | toshiba-user | +---------------+----------------+ 1 row in set (0.11 sec) So, please, try to repeat on newer 5.1.x versions and give some details (like my.cnf settings).
[10 Oct 2008 8:34]
Oli Sennhauser
reproducing the bug
Attachment: bug_39955.log (application/octet-stream, text), 15.64 KiB.
[10 Oct 2008 8:35]
Oli Sennhauser
used my.cnf
Attachment: my.cnf (application/octet-stream, text), 189 bytes.
[10 Oct 2008 9:00]
Oli Sennhauser
revised version. forget about the old one...
Attachment: bug_39955.log (application/octet-stream, text), 6.63 KiB.
[10 Oct 2008 9:42]
Sveta Smirnova
Consistent slow result on Mac for me: mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (1.05 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.59 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.57 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.59 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.52 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.54 sec) mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | HOSTNAME | apple | +---------------+----------------+ 1 row in set (0.52 sec)
[10 Oct 2008 10:06]
Sveta Smirnova
Thank you for the feedback. Verified as described in second log file.
[12 Oct 2008 16:41]
wang xiaolin
hi Oli Sennhauser : I meet this problem too . This boring me so much .. I increase to parameter to my MySQL5.1 : max_heap_table_size=64M tmp_table_size=64M then ,the "show variables;" or "select * from INFORMATION_SCHEMA.GLOBAL_VARIABLES where VARIABLE_NAME = 'hostname'; " will cost 59 ms 。 but that is too long ,in MySQL 5.0 it just take 12ms . hope get some good news from mysql .
[13 Oct 2008 7:24]
Oli Sennhauser
Hi Wang When this is an issue for you, I can recommend the following work around (for xxx_VARIABLES only!): * Create your own table (for example CREATE TABLE test.GLOBAL_VARIABLES LIKE INFORMATION_SCHEMA.GLOBAL_VARIABLES). * In my case I had to increase the MAX_HEAP_TABLE_SIZE to 20M (if you do not want to do this, change the VARCHAR(very big) to a VARCHAR(128) or so. * Add a primary key on the VARIABLE_NAME field (alter table GLOBAL_VARIABLES add PRIMARY KEY (VARIABLE_NAME);) * Then periodically update this table by a replace into GLOBAL_VARIABLES select * from INFORMATION_SCHEMA.GLOBAL_VARIABLES (for example every 5 minutes or once a day or so...) The you get the hyper-fast results you expect! Regards Oli
[13 Oct 2008 10:46]
MySQL Verification Team
Bug: http://bugs.mysql.com/bug.php?id=39990 was marked as duplicaate of this bug.
[14 Oct 2008 0:56]
wang xiaolin
hi Oli Sennhauser : this is a good idea really . But , "show variables " is invoked at connector/j driver when it connect to mysql . I do not want to modifiy the driver source ..
[17 Oct 2008 8:20]
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/commits/56438 2672 Sergey Glukhov 2008-10-17 Bug#39955 SELECT on INFORMATION_SCHEMA.GLOBAL_VARIABLES takes too long VARIABLE_VALUE field is decreased to 1024 symbols. (affected I_S tables: GLOBAL_VARIABLES, SESSION_VARIABLES, GLOBAL_STATUS, SESSION_STATUS). The only variable which can be longer than 1024 is init_connect. The variable will be truncated with warning. Additional fix: Added where condition filter which speed up queries which have where condition with expressions which use VARIABLE_NAME field.
[24 Oct 2008 8:40]
Alexey Botchkov
ok to push
[13 Nov 2008 12:17]
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/commits/58625 2708 Sergey Glukhov 2008-11-13 Bug#39955 SELECT on INFORMATION_SCHEMA.GLOBAL_VARIABLES takes too long VARIABLE_VALUE field is decreased to 1024 symbols. (affected I_S tables: GLOBAL_VARIABLES, SESSION_VARIABLES, GLOBAL_STATUS, SESSION_STATUS). The only variable which can be longer than 1024 is init_connect. The variable will be truncated with warning. Additional fix: Added where condition filter which speed up queries which have where condition with expressions which use VARIABLE_NAME field.
[13 Nov 2008 13:01]
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/commits/58628 2925 Sergey Glukhov 2008-11-13 [merge] 5.1-bugteam->6.0-bugteam merge(bug#39955, bug#38909)
[8 Dec 2008 10:19]
Bugs System
Pushed into 5.1.31 (revid:sergey.glukhov@sun.com-20081113120911-8e7qk91hc82tfdr0) (version source revid:azundris@mysql.com-20081114081134-pswy3m5go7r64m1p) (pib:5)
[8 Dec 2008 11:32]
Bugs System
Pushed into 6.0.9-alpha (revid:sergey.glukhov@sun.com-20081113125316-lt0z01zqh50w8gva) (version source revid:ingo.struewing@sun.com-20081121151447-dtf2ofz2ys0zqed1) (pib:5)
[10 Dec 2008 20:35]
Paul DuBois
Noted in 5.1.31, 6.0.9 changelog. Retrieval speed from the following INFORMATION_SCHEMA tables was improved by shortening the VARIABLE_VALUE column to 1024 characters: GLOBAL_VARIABLES, SESSIONL_VARIABLES, GLOBAL_STATUS, and SESSIONL_STATUS. As a result of this change, any variable value longer than 1024 characters will be truncated with a warning. This affects only the init_connect system variable.
[10 Dec 2008 20:36]
Paul DuBois
Typo in previous comment: SESSIONL_VARIABLES and SESSIONL_STATUS should be SESSION_VARIABLES and SESSION_STATUS.
[19 Jan 2009 11:21]
Bugs System
Pushed into 5.1.31-ndb-6.2.17 (revid:tomas.ulin@sun.com-20090119095303-uwwvxiibtr38djii) (version source revid:tomas.ulin@sun.com-20090108105244-8opp3i85jw0uj5ib) (merge vers: 5.1.31-ndb-6.2.17) (pib:6)
[19 Jan 2009 12:59]
Bugs System
Pushed into 5.1.31-ndb-6.3.21 (revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (version source revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (merge vers: 5.1.31-ndb-6.3.21) (pib:6)
[19 Jan 2009 16:05]
Bugs System
Pushed into 5.1.31-ndb-6.4.1 (revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (version source revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (merge vers: 5.1.31-ndb-6.4.1) (pib:6)