NAME
MySQL::Partition - Utility for MySQL partitioning
SYNOPSIS
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->truncate_partitions('p1');
$handle = $list_partition->prepare_truncate_partitions('p2_3');
$handle->execute;
$list_partition->drop_partitions('p1');
$handle = $list_partition->prepare_drop_partitions('p2_3');
$handle->execute;
DESCRIPTION
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.
INTERFACE
Constructor
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.
Following keys are required in %args
.
dbh => DBI::db
table => Str
type => Str
-
partitioning method.
list(?: columns)?
orrange(?: columns)?
.If
list
is specified,new
method returnsMySQL::Partition::Type::List
object. expression => Str
-
partitioning expression. e.g.
event_id
,created_at
,TO_DAYS(created_at)
, etc.
Methods
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.
Methods for manipulating partition
$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)
$mysql_partition->truncate_partitions(@partition_names)
Methods for MySQL::Partition::Handle
Each method for manipulating partition has prepare_*
method which returns MySQL::Partition::Handle object.
prepare_create_partitions
prepare_add_partitions
prepare_drop_partitions
prepare_truncate_partitions
Actually, $mysql_partition->create_partitions(...);
is a shortcut of following.
my $handle = $mysql_partition->prepare_create_partitions(...);
$handle->execute;
LICENSE
Copyright (C) Songmu.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Songmu <y.songmu@gmail.com>