Hi,

Apologies in advance for the large post but I've tried to explain my problem
as much as I can.


I'm having load issues with my InnoDB server and am not sure what I should
try to resolve this problem.
The machine is redhat Linux 7.2 with dual processors, 4GB ram and about 32GB
disk space.
The MySQL version is 4.0.13.

The machine is used purely with InnoDB tables and has a few very large
tables acting as cache data.
I've allocated 10 data files each 2Gb, when busy the files are between 40%
and 60% used.

I have clients reading and writing to the tables constantly and these
clients do not see any performance degradation which I'm really happy about.

But every 10 minutes I run a cron job that deletes expired/duplicated
records from the tables.  This process seems to hammer the system.
I have 3 tables, table A, B and C.  Table A has a 1 to many relationship
with table B and table B has a 1 to many relationship with table C.
Table A is the master record table and holds the timestamp.

So, this cron job does a select to get expired records, this query is very
fast as retrieves anywhere between 5,000 and 50,000 records.
For each expired record it then starts a transaction, deletes all records
from C, deletes all records from B, deletes the master record from A and
then ends the transaction.  That's it.  This process takes about 5 minutes
if expiring a large number of records and can take the machines load average
to about 10.

Looking at top when this process runs I can see many mysql process but 1 or
2 are taking alot of CPU, 1 about 50% and 1 about 35%, sometimes the top one
can go up as high as 90%.

The my.cnf file for innodb is as follows

  innodb_buffer_pool_size = 1024M
  innodb_additional_mem_pool_size = 15M
  innodb_log_file_size = 256M
  innodb_log_buffer_size = 8M

I've read the InnoDB tuning page (
http://dev.mysql.com/doc/mysql/en/InnoDB_tuning.html ), there are a few
things I could try but I'd like to make sure that I'm on the right tracks.

  * Firstly I could put more queries into a single transaction.

  * Should I increase the innodb_buffer_pool_size ??, ( bare in mind there
is a 2GB limit on linux/GLIBC )

  * Change the innodb_flush_method to O_DSYNC

Any advice on the steps I should take would be greatly appreciated.
Please let me know if you require any additional information.

Best Regards,

Marvin Wright

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to