[ale] Convert MyISAM table to InnoDB takes forever
Brandon Checketts
brandon at brandonchecketts.com
Mon Aug 24 15:57:18 EDT 2009
I've historically used MyISAM tables for almost everything because they seem to
work well in most cases. However, I now have a problem where the table-level
locking is causing some delays and converting the table to InnoDB with row-level
locking seems like the most straightforward solution.
I've made various attempts at converting the table to InnoDB, and each time it
takes seemingly forever to insert data into the table. I've let it run for
half a day before and I eventually give up figuring that it will never finish.
The MyISAM table is not terribly huge. Its about 600 MB with around 1.9 million
rows.
I've tried 'ALTER TABLE...ENGINE=InnoDB', a few months ago without success.
Yesterday & today I've been attempting a 'INSERT INTO newtable SELECT * FROM
oldtable', but have the same results.
I don't have anything special with regards to InnoDB in my.cnf, which might be
part of the problem. I seem to remember trying different values for
innodb_flush_log_at_trx_commit, but I can't remember for sure, and I don't know
that it would make that much difference.
Some details about the software and hardware:
[root at rimu1 ~]# cat /etc/issue
CentOS release 5.3 (Final)
Kernel \r on an \m
mysql> show table status where Name = 'books'\G;
*************************** 1. row ***************************
Name: books
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 1884858
Avg_row_length: 286
Data_length: 539451700
Max_data_length: 281474976710655
Index_length: 88403968
Data_free: 0
Auto_increment: NULL
Create_time: 2008-06-04 02:10:23
Update_time: 2009-08-24 14:24:21
Check_time: 2009-01-22 09:45:21
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
CREATE TABLE `books` (
`isbn13` varchar(13) NOT NULL default '',
`isbn10` varchar(10) NOT NULL default '',
`title` varchar(255) NOT NULL default '',
`author` varchar(255) NOT NULL default '',
`binding` varchar(20) NOT NULL default '',
`edition` varchar(20) NOT NULL default '',
`msrp` decimal(6,2) NOT NULL default '0.00',
`pages` smallint(5) unsigned NOT NULL default '0',
`published_date` date default NULL,
`publisher` varchar(255) NOT NULL default '',
`rank` int(10) unsigned NOT NULL default '0',
`rating` decimal(3,1) NOT NULL default '0.0',
`images_ser_gz` blob NOT NULL,
`modified` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`isbn13`),
KEY `isbn10` (`isbn10`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> select version();
+------------+
| version() |
+------------+
| 5.0.45-log |
+------------+
I'm trying to test the process on a backup server, so hardware is not terribly
beefy. It is a Dual Core AMD 4200 processor with 4 GB of Ram and dual 500 GB
SATA drives in a software raid array.
Any thoughts on what I might do to speed this up? Or does this seem like normal
InnoDB performance?
Thanks,
Brandon Checketts
More information about the Ale
mailing list