MySQL::Partition - Utility for MySQL partitioning
use MySQL::Partition; my $dbh = DBI->connect(@connect_info); my $list_partition = MySQL::Partition->new( dbh => $dbh, type => 'list', table => 'test', expression => 'event_id', ); $list_partition->is_partitioned; $list_partition->create_partitions('p1' => 1); # ALTER TABLE test PARTITION BY LIST ... $list_partition->has_partition('p1'); # true $list_partition->add_partitions('p2_3' => '2, 3'); # handle interface my $handle = $list_partition->prepare_add_partitions('p4' => 4); print $handle->statement; $handle->execute; $list_partition->drop_partitions('p1'); $handle = $list_partition->prepare_drop_partitions('p2_3'); $handle->execute;
MySQL::Partition is utility module for MySQL partitions.
This module creates a object for manipulating MySQL partitions. This is very useful that we no longer write complicated and MySQL specific SQL syntax any more.
THE SOFTWARE IS STILL ALPHA QUALITY. API MAY CHANGE WITHOUT NOTICE.
my $mysql_partition:MySQL::Partition = MySQL::Partition->new(%args)
Create a new object which is subclass of MySQL::Partition. (MySQL::Partition::Type::Range or MySQL::Partition::Type::List.
%args must contain following keys.
dbh => DBI::st
table => Str
type => Str
partitioning method. <list(?: columns)?> or <range(?: columns)?>.
<list(?: columns)?
<range(?: columns)?
If list is specified, new method returns MySQL::Partition::Type::List object.
list
new
MySQL::Partition::Type::List
expression => Str
partitioning expression. e.g. event_id, created_at, TO_DAYS(created_at), etc.
event_id
created_at
TO_DAYS(created_at)
my @partition_names = $mysql_partition->retrieve_partitions
Returns partition names in the table.
my $bool = $mysql_partition->is_partitioned
Returns the table is partitioned or not.
my $bool = $mysql_partition->has_partitione($partition_name)
Returns the table has a specified partition name or not.
$mysql_partition->create_partitions($partition_name => $partition_description, [$name => $description, ...])
$mysql_partition->add_partitions($partition_name => $partition_description, [$name => $description], ...)
$mysql_partition->drop_partitions(@partition_names)
Each method for manipulating partition has prepare_* method which returns MySQL::Partition::Handle object.
prepare_*
prepare_create_partitions
prepare_add_partitions
prepare_drop_partitions
Actually, $mysql_partition->create_partitions(...); is a shortcut of following.
$mysql_partition->create_partitions(...);
my $handle = $mysql_partition->prepare_create_partitions(...); $handle->execute;
Copyright (C) Songmu.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Songmu <y.songmu@gmail.com>
To install MySQL::Partition, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MySQL::Partition
CPAN shell
perl -MCPAN -e shell install MySQL::Partition
For more information on module installation, please visit the detailed CPAN module installation guide.