欢迎各位大牛指教

表分区

随着我们项目的发展,数据量越来越大,查询和持久化效率随之降低,所以在我们给相应的表 改成 分区表 

分区优点:
    1、对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。 
    2、一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只查询一个或多个分区内,
         这样在查找时就不用查找其他剩余的分区。
    3、涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。
         这种查询的一个简单例子如 “SELECT user_id, COUNT (hobbys) as hobbys_total  FROM userInfo GROUP BY user_id;”。
         通过“并行”,这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
 

其中分区有四种:

RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。

LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。

 

 

HASH分区 与 KEY分区 类似,是按照某种算法对字段进行分区。


我们选用的是RANGE分区 和 LIST分区
 
创建分区表    create table goods(
                         id int ......
                         gt_id....
                               *
                            PRIMARY KEY (`id`,`gt_id`)  
                            )ENGINE=InnoDB DEFAULT CHARSET=utf8  
 
                    PARTITION BY LIST (gt_id)  
                         
 (  
                            PARTITION pA VALUES IN (1),  
                            PARTITION pA VALUES IN (1), 
                           )
 

 增加删除分区语句:

        alter table T_part add partition(partition p2 values less than (MAXVALUE));  ---新增分区
        alter table T_part DROP partition p2; ----删除分区
posted @ 2016-08-23 13:26  夏沫秋至  阅读(132)  评论(0编辑  收藏  举报