大数据(一)--水平分表分区

现阶段即便是一些创业型小公司也会遇到某些表数据过大的情况,而造成查询缓慢,此时我们可以对单表采用水平分区分表。

1.分区分表是在物理上对数据表所对应的文件进行拆分,对应的表名是不变的,所以不会影响到之前业务逻辑的sql。

2.分区的文件放在不同盘符可以充分利用cpu来提高查询效率。

3.对于表数据比较小的不应进行水平分表(一般单表在700万条以上考虑分表),因为分表后的查询等业务会创建对应的对象,也会造成一定的开销。

下面是水平分区分表步骤,本文采用可视化操作,如喜欢代码操作的请参照百度:

a:点数据库右键,属性,建立文件组,假设要将一张带时间字段表按月分表,假设是今年的12个月,就建立12个分组

大数据(一)--水平分表分区

b:同上,建立文件,每个分组放一个文件,建立12个文件,完成后可以在对应的物理位置找到该12个文件

大数据(一)--水平分表分区

c.分表

.大数据(一)--水平分表分区

 

 

 

大数据(一)--水平分表分区

创建好后以下位置可以看到

大数据(一)--水平分表分区

也可以用代码方式实现如下:

--创建分区函数
create partition function datetest(datetime) as range right for values
('2019-01-01','2019-02-01','2019-03-01','2019-04-01','2019-05-01','2019-06-01',
'2019-07-01','2019-08-01','2019-09-01','2019-10-01','2019-11-01','2019-12-01')

 

--创建分区方案
CREATE PARTITION SCHEME TestScheme AS PARTITION [datetest]
TO([PRIMARY], [group01], [group02], [group03], [group04], [group05],
[group06], [group07], [group08], [group09], [group10], [group11], [group12])

以上弄好后可以生成脚本,也可立即执行,分区成功。

下面测试分区查询sql:

select *, $partition.分区名(列名) partitionNum from 表名,也可插入一些数据尝试。