I am getting table corruption on one machine that I was testing a change
to get better performance.
This is using the C API to connect to the database. With the delete
without
the sort by id, I started getting the database key corruption. There
were about
2.6 million rows matched to be deleted, so I also limited to delete only
normally less
than 6000 at a time out of about 3.9 million rows. It is still
happening with 2.6 million
records and 1.3 million marked for deletion.
mysql> check table mzLog;
+--------------+-------+----------+-------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------+-------+----------+-------------------------------+
| mazama.mzLog | check | warning | Table is marked as crashed |
| mazama.mzLog | check | error | Found 2636585 keys of 2636586 |
| mazama.mzLog | check | error | Corrupt |
+--------------+-------+----------+-------------------------------+
My understanding was that if the table was locked write when deleting or
writing that the keys should be safe. Perhaps there is something else
I could
do to resolve this.
1. Add a entry:
Lock the table..
add a entry
unlock the table
or
2. Delete old entries no longer needed.
lock
Count the number of entries that match.
unlock
Lock the table
delete any logs marked for deletion up to 5000 at a time
(previously I did a sort by id LIMIT 5000), but the
sort was taking too much time, since 2.7 million
records
matched).
unlock table
or
3. List/search/query entries.
lock
count the number of matches (since we need to take a
limited number at time)
unlock
lock
query (perhaps loop with taking 5000 matches at a time
in get the next with the last id).
unlock
DROP TABLE IF EXISTS `mzLog`;
CREATE TABLE `mzLog` (
`hostname` varchar(20) default NULL,
`username` varchar(20) default NULL,
`vNodeID` int(11) NOT NULL,
`serialNumber` int(32) default NULL,
`physloc` varchar(20) default NULL,
`osID` int(11) default NULL,
`kernelID` int(11) default NULL,
`partitionID` int(11) default NULL,
`facility` varchar(10) default NULL,
`priority` varchar(10) default NULL,
`level` int(8) default -1,
`tag` varchar(10) default NULL,
`time` timestamp NOT NULL default CURRENT_TIMESTAMP,
`program` varchar(40) default NULL,
`msg` text,
`action` int(11) default '1',
`id` int(10) unsigned NOT NULL auto_increment,
`bootsession` int(20) default NULL,
`smw` varchar(32) default NULL,
`state` int(2) default -1,
`deletedate` timestamp NOT NULL,
`orig_time` timestamp NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `hostname` (`hostname`),
KEY `id` (`id`),
KEY `program` (`program`),
KEY `facility` (`facility`),
KEY `physloc` (`physloc`),
KEY `time` (`time`),
KEY `orig_time` (`orig_time`),
KEY `deletedate` (`deletedate`),
KEY `smw` (`smw`),
KEY `msg` (`msg`(1000)),
KEY `level` (`level`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]