Serious performance problems when using InnoDB

2002-03-22 Thread Nico Sabbi


Hi, I'm using a db with few tables, one of which is reported below:

  CREATE TABLE `keywords` (
  `keyword` varchar(128) NOT NULL default '',
  `codice` varchar(16) NOT NULL default '',
  `timestamp` int(11) NOT NULL default '0',
  `soundekw` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`keyword`,`codice`),
  KEY `codice` (`codice`)
) TYPE=InnoDB |


My problem is that after having inserted more than 2-3  times  roughly 70 records 
in it, every operation such as 

DELETE from keywords;
or
SELECT count(*) from keywords;

slows to a crawl: it takes 15 minutes or so to complete.

Sometimes I even have to dump, zap, recreate  and reimport the db.

My system is redhat linux 7.2, Mysql-Max 3.23.46 (official rpm) on a Dual PIII 550,  
256 MB ram,  Raid 1 on a Mylex Raid card and the following configuration for Innodb:


innodb_data_home_dir = /home/share/innodb/
innodb_data_file_path = ibdata1:512M
set-variable = innodb_mirrored_log_groups=1
innodb_log_group_home_dir = /home/share/innodb/log/
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=5M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_arch_dir = /home/share/innodb/log/
innodb_log_archive=1
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_file_io_threads=4
set-variable = innodb_lock_wait_timeout=50

I know this configurations doesn't look aggressive at all, but it shouldn't even lead 
to such a slow-down.

Can anyone help me please?

Thanks,
Nico




-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Re: Serious performance problems when using InnoDB

2002-03-22 Thread BD

At 05:53 AM 3/22/2002, you wrote:

Hi, I'm using a db with few tables, one of which is reported below:

   CREATE TABLE `keywords` (
   `keyword` varchar(128) NOT NULL default '',
   `codice` varchar(16) NOT NULL default '',
   `timestamp` int(11) NOT NULL default '0',
   `soundekw` varchar(32) NOT NULL default '',
   PRIMARY KEY  (`keyword`,`codice`),
   KEY `codice` (`codice`)
) TYPE=InnoDB |


My problem is that after having inserted more than 2-3  times  roughly 
70 records in it, every operation such as

DELETE from keywords;
 or
SELECT count(*) from keywords;

slows to a crawl: it takes 15 minutes or so to complete.

Delete from Table and and Select count(*) from Table works differently 
in InnoDb than MyISAM tables. With MyISAM both of these operations are 
instantaneous. With InnoDb they must delete each record individually or 
count each record individually and is much slower. If you need to delete 
all the rows from a large InnoDb table it is recommended that you drop the 
table and recreate it. (This is what Delete from MyISAMTable does behind 
the scenes.)

How much faster are these operations after you re-import the data? Have you 
tried a show table status to determine how much data is actually being 
used? I noticed your
configuration is set to innodb_data_file_path = ibdata1:512M and there is 
no reserve space. Granted you're probably using only 256MB of your 512MB, 
it is customary to define at least 2 file spaces as in:

innodb_data_file_path = ibdata1:512M;ibdata2:512M

You could as a last resort, dump all your data using MySQLDump, then shut 
down the MySQL server, backup your ibdata files to another drive, then drop 
your InnoDb tables (to get rid of the MySQL FRM files), drop the database, 
then delete the ibdata files, DEFRAG your drive, then recreate them from 
scratch using the 2 filespaces outlined above. Technically you don't have 
to blow away your database before expanding the InnoDb files, but starting 
from scratch will eliminate any prior problems with the disk space. One 
thing to watch out for with InnoDb is you can't drop a database without 
first dropping all the tables, otherwise the table space is still there. I 
don't know if this still applies to the latest version or not but it was 
going to be fixed sometime in the future. So starting from scratch after 
your volume has been defragged may speed things up for you. It will take 
you an hour or two, but then you will be starting from a clean slate.

Now unless this table is going to have a lot of updates from a large number 
of users at the same time, you might be happier with a MyISAM table. InnoDB 
is great for multiple updates because of its record locking, but is much 
slower for updates from a single user and selects from multiple users. And 
from what I can remember, MyISAM tables don't require table locks when 
inserting new data. You only need table locks when deleting or updating 
existing rows. So if you're not doing a lot of deletes or updates, MyISAM 
might be a better choice. Just something to consider.

Brent


Sometimes I even have to dump, zap, recreate  and reimport the db.

My system is redhat linux 7.2, Mysql-Max 3.23.46 (official rpm) on a Dual 
PIII 550,  256 MB ram,  Raid 1 on a Mylex Raid card and the following 
configuration for Innodb:


innodb_data_home_dir = /home/share/innodb/
innodb_data_file_path = ibdata1:512M
set-variable = innodb_mirrored_log_groups=1
innodb_log_group_home_dir = /home/share/innodb/log/
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=5M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_arch_dir = /home/share/innodb/log/
innodb_log_archive=1
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_file_io_threads=4
set-variable = innodb_lock_wait_timeout=50

I know this configurations doesn't look aggressive at all, but it 
shouldn't even lead to such a slow-down.

Can anyone help me please?

Thanks,
 Nico




-
Before posting, please check:
http://www.mysql.com/manual.php   (the manual)
http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php


_
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php