您的位置:首页 > 数据库 > MySQL

mysql分区分表

2015-09-21 14:11 519 查看
什么是分表?

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。

什么是分区?

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。

3.分表的方式:

1.mysql集群

2.自定义规则分表:

Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。

Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。

Composite(复合模式) –以上模式的组合使用

代码例子:var getTableName = function() {

var data = {

name: 'tom',

money: 2800.00,

date: '201410013059'

};

var tablename = 'account_';

var year = parseInt(data.date.substring(0, 4));

if (year < 2012) {

tablename += 2011; // account_2011

} else if (year < 2013) {

tablename += 2012; // account_2012

} else if (year < 2014) {

tablename += 2013; // account_2013

} else if (year < 2015) {

tablename += 2014; // account_2014

} else {

tablename += 2015; // account_2015

}

return tablename;

}

分区实例:http://www.2cto.com/database/201503/380096.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: