mysql分区相关

mysql分区相关文章:

1.这篇文章测试了mysql分区在大数据量情况下,在不同的表引擎下的性能比较,也说明了在索引大小大于内存时,索引扫描比全表扫描要慢。http://dev.mysql.com/tech-resources/articles/testing-partitions-large-db.html

2.这篇文章介绍了表分区(水平分区和垂直分区),http://dev.mysql.com/tech-resources/articles/performance-partitioning.html

3.这篇文章说明了利用日期列对mysql分区时,怎样用分区函数才能使用partition pruning,http://dev.mysql.com/tech-resources/articles/mysql_5.1_partitioning_with_dates.html

4.http://www.mysqlab.net/blog/2009/12/mysql-55-表分区功能增强/

5.这篇文章说明了mysql可以按多列进行分区,http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html

 

从以上几篇文章中可以得到以下几种结论:

(1)使用mysql optimizer可以优化的日期函数to_days,year

(2)表列过多影响count(*)的效率[垂直分区]

(3)不同的存储引擎支持不同的索引策略

(4)在索引大小大于内存时,索引扫描比全表扫描要慢,因此大数据量时有时索引未必好

(5)mysql可以对相应的查询只访问相关的分区

(6)mysql分区表创建示例

mysql> CREATE TABLE part_date4 -> ( c1 int default NULL, -> c2 varchar(30) default NULL, -> c3 date default NULL) engine=myisam -> PARTITION BY RANGE (year(c3)) -> (PARTITION p0 VALUES LESS THAN (1995), -> PARTITION p1 VALUES LESS THAN (1996) , -> PARTITION p2 VALUES LESS THAN (1997) , -> PARTITION p3 VALUES LESS THAN (1998) , -> PARTITION p4 VALUES LESS THAN (1999) , -> PARTITION p5 VALUES LESS THAN (2000) , -> PARTITION p6 VALUES LESS THAN (2001) , -> PARTITION p7 VALUES LESS THAN (2002) , -> PARTITION p8 VALUES LESS THAN (2003) , -> PARTITION p9 VALUES LESS THAN (2004) , -> PARTITION p10 VALUES LESS THAN (2010), -> PARTITION p11 VALUES LESS THAN MAXVALUE );

(7)所有的引擎都支持分区

(8)每个分区对应相应分区的索引,比如:一个表有10个分区,那么分区对应10个索引

(9)分区类型:range,list,hash,key,并且支持子分区

(10)myisam,innodb,archive三者比较,相同情况下

所占空间:innodb>myisam>archive

分区表扫描速度:myisam>archive>innodb,但archive所占空间比myisam小很多(大概80%-90%),而且速度不比myisam慢多少。

(11)mysql可以按多列进行分区

(12)利用explain partitions进行查询解释

你可能感兴趣的:(mysql分区相关)