[ale] Convert MyISAM table to InnoDB takes forever
Brandon Checketts
brandon at brandonchecketts.com
Mon Aug 24 17:49:26 EDT 2009
Thanks Richard. Trying that now.
Brandon
Richard Bronosky wrote:
> The performance of the insert...select process isn't great. Try
> mysqldumping the table to a file. Edit the file to modify the table
> create statement. Then redirect to file in to the mysql cli client.
> This should cut your disk i/o in half.
>
> On 8/24/09, Brandon Checketts <brandon at brandonchecketts.com> wrote:
>> 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
>> _______________________________________________
>> Ale mailing list
>> Ale at ale.org
>> http://mail.ale.org/mailman/listinfo/ale
>>
>
More information about the Ale
mailing list