lists.zerezo.com
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
***BOGO*** Re: running optimize/analyze command
HI nagaraj,
You can chose any one of the partition types:
1. Range
2. List
3. Hash
4. Key
Lets assume that you chose a Range partition
create table t1
( id int NOT NULL,
joindate datetime
);
If you have to delete records that are older than 2 months, then we
create a partition that can be designed as below:
create table t1
( id int NOT NULL,
joindate datetime,
PRIMARY KEY (` joindate`)
) PARTITION BY RANGE (to_days(joindate))
(PARTITION BEFOREJAN2008 VALUES LESS THAN (to_days('2008-01-01')),
PARTITION JAN2008 VALUES LESS THAN (to_days('2008-02-01')) ,
PARTITION FEB2008 VALUES LESS THAN (to_days('2008-03-01')),
.
.
PARTITION ERROR VALUES LESS THAN (9999999));
the above statement creates partition that has partitions BEFOREJAN2008
, JAN2008, FEB2008 and so on. The records gets populated in the
respective partition depending on the value that is calculated in the
to_days() function. So to delete records that are less than Jan2008, you
can drop the partition BEFOREJAN2008.
Alter table t1 drop partition BEFOREJAN2008;
which reduces the time of delete operation.
Regards,
Pradeep Chandru
Nagaraj S wrote:
Chandru,
How to overcome by partition, Can you explain with details/examples
mdm,
-----Original Message-----
From: chandru [*mailto:pradeep.chandru@xxxxxxxxxxxx*<pradeep.chandru@xxxxxxxxxxxx>]
Sent: Monday, May 26, 2008 2:40 PM
To: Alex Arul Lurthu; Ananda Kumar
Cc: Sebastian Mendel; MySQL General
Subject: Re: running optimize/analyze command
Hi anand,
To add to alex's views, I see that you do two major operations 1. Insert
* Use a temporary table that loads the data initially and then you
copy the same to the original table, which can prevent load on the
original table and shall be faster as well.
* you can disable the indexes and then insert the records into the
table. after the insert is over you can enable the indexes.
* try using extended inserts and increase the bulk_insert_buffer_size.
* In case you use load data infile use that with CONCURRENT
* Share the I/O load by having the data written across multiple discs.
2. delete
* Please try to use partition if you can migrate that to MySQL 5.1.x
and partition the tables based on the delete condition.
* Since you where mentioning that there is huge volume of data that
needs to be deleted, check that if the max_allowed_packet value is
set to 1GB, if the selected data volume is more than 1GB try to
split the delete query into smaller ones
Note: confirm that indexes are available on the where clause
Regards,
Pradeep Chandru
********** DISCLAIMER **********
Information contained and transmitted by this E-MAIL is proprietary to
Sify Limited and is intended for use only by the individual or entity to
which it is addressed, and may contain information that is privileged,
confidential or exempt from disclosure under applicable law. If this is a
forwarded message, the content of this E-MAIL may not have been sent with
the authority of the Company. If you are not the intended recipient, an
agent of the intended recipient or a person responsible for delivering the
information to the named recipient, you are notified that any use,
distribution, transmission, printing, copying or dissemination of this
information in any way or in any manner is strictly prohibited. If you have
received this communication in error, please delete this mail & notify us
immediately at admin@xxxxxxxxxxxx
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=royale@xxxxxxxxxx