MySQL分区的实现方式
2016-09-10 11:40
99 查看
为什么要分区?
在日常的开发中,我们经常会遇到大表,即数据量达到数百万条乃至数千万条的情况。这样的表过于庞大,以至于在进行查询、修改的时候耗时太长,性能低下,所以我们需要使用分区。
分区与分表的区别
分区与分表有着不同的地方,主要有以下几点:
1、分表是将大表分为若干个独立的小表。而分区则是将数据分段划分后在多个位置存放,其实还是一张表。
2、分表需创建多个表,并且需要按照一定的规则写入、读取指定的表。而分区只需要一个表名即可。
当然,在实际中,我们可以采用分表、分区相结合来提高数据库的工作效率。
下面介绍一下分区的方式:
1、RANGE分区
这种模式允许将数据划分为不同的范围,例如可以通过年份来划分,例如:
2、LIST分区
这种模允许系统通过预定义的列表的值来对数据进行划分,例如:
3、HASH分区
这种模式允许系统通过对表的一列或多列Hash进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以通过对一个表的主键进行分区。
4、KEY分区
与HASH分区类似
在日常的开发中,我们经常会遇到大表,即数据量达到数百万条乃至数千万条的情况。这样的表过于庞大,以至于在进行查询、修改的时候耗时太长,性能低下,所以我们需要使用分区。
分区与分表的区别
分区与分表有着不同的地方,主要有以下几点:
1、分表是将大表分为若干个独立的小表。而分区则是将数据分段划分后在多个位置存放,其实还是一张表。
2、分表需创建多个表,并且需要按照一定的规则写入、读取指定的表。而分区只需要一个表名即可。
当然,在实际中,我们可以采用分表、分区相结合来提高数据库的工作效率。
下面介绍一下分区的方式:
1、RANGE分区
这种模式允许将数据划分为不同的范围,例如可以通过年份来划分,例如:
create table test( id int, year int )engine = myisam partition by range(year)( partition t0 values less than (1990), #年份小于1990年的 partition t1 values less than (2000), #年份小于2000年大于1990年的 partition t2 values less than (2010), #年份小于2010年大于2000年的 partition t3 values less than maxvalue ); #年份大于2010年的
2、LIST分区
这种模允许系统通过预定义的列表的值来对数据进行划分,例如:
create table test( id int, area int )engine = myisam partition by list(area)( partition heilongjiang values in (1,2), #将area为1 2 的分入heilongjiang区 partition beijing values in (3,4), #将area为3 4 的分入beijing区 partition shanxi values in (5,6), #将area为 4 6 的分入shanxi区 partition hebei values in (7,8) #将area为7 8 的分入hebei区 );
3、HASH分区
这种模式允许系统通过对表的一列或多列Hash进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以通过对一个表的主键进行分区。
create table test( id int, name varchar(30) )engine=myisam partition by hash(id) partitions 10; #分几个区
4、KEY分区
与HASH分区类似
create table test( id int, name varchar(30) )engine = myisam partition by linear key(id) partitions 3; #分几个区
相关文章推荐
- MySQL分区的实现方式
- xml应用(2): 通过向xsl传递参数+数据岛方式,实现在客户端单个xml的分框架显示
- 用ISAPI方式实现Web页面的自动更新
- 猴子选大王(约瑟夫环另外的实现方式)
- 采用Informaker和pbl中dw相结合的方式实现强大的自定义报表功能
- 让客户端把ASP文件以XML的方式来处理最简单的实现方法.
- SQL 在查询中插入行号--自定义分页的另外一种实现方式
- (转)使用一个下拉框或文本框+列表框的方式实现类似IE地址栏自动完成的功能
- 全新无边框窗口实现方式
- ghost实现 PXE 网络启动方式
- 使用vqsignup实现web方式的email账号申请(qmail系列文章)
- 一个实现缩略图方式查看的ListView.很不完整,请大家共同完善。
- 如何编程实现在快速启动栏创建快捷方式
- Delphi编程实现程序快捷方式
- php实现"全局静态变量类"的一种实现方式
- 如何用Shell实现程序组快捷方式的添加
- 利用动态调用方式实现分布式应用(下)
- FTP方式实现BS下的WORD操作
- 全新无边框窗口实现方式[HTML]
- 网页方式实现MSN的弹出窗口