On Fri, Aug 7, 2009 at 5:46 PM, Nathan M<locu.li...@gmail.com> wrote: > I'm open to suggestions on this front from anybody actively using > mysql and partitions. I am using the following config: > $sql_partition_tag = sub { my($msginfo)=...@_; > iso8601_week($msginfo->rx_time) }; > > We maintain quarantine for 3 weeks maximum, therefore my suggested > partitioning looks like this: > > ALTER TABLE quarantine PARTITION BY LIST (partition_tag) ( > PARTITION p0 VALUES IN (1,5,9,13,17,21,25,29,33,37,41,45,49), > PARTITION p1 VALUES IN (2,6,10,14,18,22,26,30,34,38,42,46,50), > PARTITION p2 VALUES IN (3,7,11,15,19,23,27,31,35,39,43,47), > PARTITION p3 VALUES IN (4,8,12,16,20,24,28,32,36,40,44,48,52)); > > Reasoning. Since i maintain a maximum 3 weeks mail data, I can drop > whichever partition is out of range. For instance, if it's week 31, I > want to retain weeks 31, 30, and 29 of email. I drop p3 in this case > and it wipes out week 28. The methodology seems a little clunky > though because it limits what I can purge later on if we change our > retention policy so I may rethink this. Another possibility would be > to create 52 partitions, one for each week. Thoughts? Better ideas? > > I've seen some other suggestions which all seem to follow this similar > theme both in LESS THAN and LIST formats accomplishing similar things: > PARTITION p0 VALUES LESS THAN (6), > PARTITION p1 VALUES LESS THAN (12), > PARTITION p2 VALUES LESS THAN (18), > PARTITION p3 VALUES LESS THAN (24), > PARTITION p4 VALUES LESS THAN (30), > PARTITION p5 VALUES LESS THAN (36), > PARTITION p6 VALUES LESS THAN (42), > PARTITION p7 VALUES LESS THAN (48), > PARTITION p8 VALUES LESS THAN (54) > > It would seem to me this further limits options as it requires > maintaining a minimum of 6 weeks of data. Open to ideas others have > implemented with success. I'm actually kinda leaning towards 52 > partitions at this point for maximum speed and flexibility while using > iso8601 week as the value. > > Next up is the cleanup scripts, but they seem fairly simple. Given my > first example, something along the lines of the 2 queries below would > probably work. Totally untested as of yet. > > if ($week == 31) > ALTER TABLE quarantine DROP PARTITION p3; > ALTER TABLE quarantine ADD PARTITION (PARTITION p3 VALUES IN > (4,8,12,16,20,24,28,32,36,40,44,48,52));
Nobody on the list using partition_tags? - N ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ AMaViS-user mailing list AMaViS-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amavis-user AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3 AMaViS-HowTos:http://www.amavis.org/howto/