ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 分表or表分区

分表or表分区

原创 Linux操作系统 作者:rushm 时间:2012-10-24 10:43:42 0 删除 编辑

两种mysql典型的分表:

1、数据库上:如merge引擎;2、程序上:事先建立多表,程序存取数据先判断,然后再对哪张表进行操作。


分表一般是数据量非常大,而且访问上没有绝对的热点,基本上所有的数据都有可能会访问到,为了查询的性能和平时DDL的快速会采用分表的方法。

对于查询语句简单、有热点数据,考虑表分区。

分区(range):

mysql优化器支持以下两种内置的日期函数进行分区:

TO_DAYS()

YEAR()

注意问题:

主键或者唯一索引必须包含分区字段:如PRIMARY KEY(id, created),不过对INNODB来说,大主键不爽。

采用分区的表不支持外键:相关的约束逻辑必须通过程序来实现。

注意增加MAXVALUE分区

不同的主从服务器分区策略,例如master按Hash分区,slave按range分区:在主服务器上使用range类型的分区通常并没有太大意义,此时使用hash类型的分区相对更好一些,假设使用PARTITION BY HASH(id) PARTITIONS 10,那么当插入新数据时,会根据id把数据平均分散到各个分区上,由于文件小,所以效率高,更新操作会变得更快。

是否分区正确,务必用explain验证下是否在相应的分区查询。

在已经建好没有分区功能的表上是不能添加分区的,只能新建,然后数据导过去。



--1--

CREATE TABLE `loginoff` (

  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, -----必须去掉

  `monetid` varchar(20) DEFAULT NULL,

  `action` varchar(20) DEFAULT NULL,

  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

  UNIQUE KEY `id` (`id`),

  KEY `idx_monetid` (`monetid`),

  KEY `idx_date_monetid` (`date`,`monetid`,`action`)

)partition by range(to_days(date))(

partition p2012 values less than (2012-01_01),

partition p2013 values less than (2013-01_01),

partition p2014 values less than (2014-01_01),

partition p2015 values less than (2015-01_01),

partition p2016 values less than MAXVALUE);



新增分区

mysql> ALTER TABLE sale_data

    ->   ADD PARTITION (PARTITION p201010 VALUES LESS THAN (201011));

删除分区

mysql> ALTER TABLE sale_data DROP PARTITION p201010;

分区的合并

mysql> ALTER TABLE sale_data

    ->   REORGANIZE PARTITION p201001,p201002,p201003,

    ->                        p201004,p201005,p201006,

    ->                        p201007,p201008,p201009 INTO

    -> (

    ->   PARTITION p2010Q1 VALUES LESS THAN (201004),

    ->   PARTITION p2010Q2 VALUES LESS THAN (201007),

    ->   PARTITION p2010Q3 VALUES LESS THAN (201010)

    -> );

分区的拆分

mysql> ALTER TABLE sale_data REORGANIZE PARTITION p2010Q1 INTO (

    ->     PARTITION s2009 VALUES LESS THAN (201001),

    ->     PARTITION s2010 VALUES LESS THAN (201004)

    -> );

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22005290/viewspace-747067/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-06-30

  • 博文量
    1
  • 访问量
    6256