[ale] Convert MyISAM table to InnoDB takes forever
Richard Bronosky
Richard at Bronosky.com
Mon Aug 24 16:16:28 EDT 2009
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
>
--
Sent from my mobile device
.!# RichardBronosky #!.
More information about the Ale
mailing list