Using MySQL 3.23.40
App is logging db with 130 clients to a central MySQL db
with 2 million events per day. Aged events of over 7 days
are no longer required. The central table is myisam type
with fixed size (datetime, enum and foreign keys only).
Selects are done infrequently while inserts are done
throughout the day. What is the fastest delete possible
and still keep table optimized?
Here are two ways that were developed. Either algorithm
is done once a day when server activity is at a minimum.
The first technique is in the documentation, the second
technique is twice as fast.
Delete rows and optimize
------------------------
DELETE FROM table WHERE etime<"2002-02-25";
OPTIMIZE TABLE table;
The time to delete 2 million rows is 24 minutes.
The time to optimize is 18 minutes.
Total time is 42 minutes.
Transfer only newest data to no-index temporary table
----------------------------------------------------
LOCK TABLES table t READ;
INSERT INTO table_tmp
SELECT * FROM table WHERE etime>"2002-02-25";
TRUNCATE TABLE table;
UNLOCK TABLES;
INSERT INTO table
SELECT * FROM table_tmp;
The time to insert 10 million rows into temporary table
is 3 minutes.
The time to truncate table is 5 seconds.
The time to insert from temporary table back to primary
table is 18 minutes.
Total time is 21 minutes.
Does anyone know of a different approach of deleting
rows while keeping the table optimized? Would welcome
any comments.
David
PS1 Optimized table is defined as no deletes to table
without a subsequent optimize. If deletes and inserts
are done simultaneously, query times go up drastically.
This slowdown is documented.
PS2 Hardware is a 4 cpu Solaris with key_buffer=1024M &
thread_concurrency=8. Only other db in mysql is used
infrequently.
---
David E Lopez
email: [EMAIL PROTECTED]
---------------------------------------------------------------------
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