Something appears to be wrong with my MySQL even with very, very simple operations on almost empty (~100) tables
E.g. DROP TABLE IF EXISTS hookup_gender
takes 10+ seconds
mysql> show processlist;
+----+---------------+---------------------+---------------+---------+------+----------------------+--------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+---------------+---------------------+---------------+---------+------+----------------------+--------------------------------------+
| 2 | pegpro_hookup | 130.88.149.86:51593 | pegpro_hookup | Sleep | 43 | | NULL |
| 92 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 93 | pegpro_hookup | localhost | pegpro_hookup | Query | 7 | checking permissions | DROP TABLE IF EXISTS `hookup_gender` |
+----+---------------+---------------------+---------------+---------+------+----------------------+--------------------------------------+
Whereas a basic table create takes 30+ seconds
mysql> show processlist;
+----+---------------+---------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+---------------+---------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
| 2 | pegpro_hookup | 130.88.149.86:51593 | pegpro_hookup | Sleep | 24 | | NULL |
| 92 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 93 | pegpro_hookup | localhost | pegpro_hookup | Query | 25 | creating table | CREATE TABLE `hookup_message`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`related_post_id` INTEGER NO |
+----+---------------+---------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+
What might be causing this slowdown?
What further information can I provide?
Thanks for your time,
Info:
top - 02:44:33 up 1:15, 2 users, load average: 1.59, 1.57, 1.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2097152k total, 398904k used, 1698248k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
Error log
root@tent:~$ tail -f /var/lib/mysql/mysql-bin.err
111107 1:29:00 [Note] Event Scheduler: Purging the queue. 0 events
111107 1:29:01 InnoDB: Starting shutdown...
111107 01:29:41 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
111107 1:29:41 [Note] Plugin 'FEDERATED' is disabled.
111107 1:29:41 InnoDB: Initializing buffer pool, size = 8.0M
111107 1:29:41 InnoDB: Completed initialization of buffer pool
111107 1:29:55 InnoDB: Started; log sequence number 0 2618946
111107 1:30:06 [Note] Event Scheduler: Loaded 0 events
111107 1:30:06 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.59-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
iostat:
root@tent:~$ iostat
Linux 2.6.18-274.3.1.el5.028stab094.3 07/11/11
avg-cpu: %user %nice %system %iowait %steal %idle
0.15 0.05 0.08 2.45 0.00 97.28
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
Thanks for your time,
Best Answer
It appears you are using innodb. During a table drop, the innodb engine locks the entire buffer pool and wipes out any references to the tables, and then drops the tables. This takes a fair bit of time when you have a large buffer pool.
One option is to switch to using the Percona builds of mysql. They have a specific feature to help this out
http://www.percona.com/docs/wiki/percona-server:features:misc_system_variables