最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL表分区的使用

来源:懂视网 责编:小采 时间:2020-11-09 10:34:12
文档

MySQL表分区的使用

MySQL表分区的使用:分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3开始支持Partition 一 分区和分表的概念 分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3
推荐度:
导读MySQL表分区的使用:分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3开始支持Partition 一 分区和分表的概念 分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3

分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3开始支持Partition

一 分区和分表的概念

分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3开始支持Partition

分表 通过人为的手动去建立三张表,每张表的文件都是相对独立的。

分区和分表的对比:

分表 分区

多张数据表 一张数据表

重复数据的风险 没有数据重复的风险

写入多张表 写入一张表

没有统一的约束限制 强制的约束限制

二 MySQL的分区类型介绍

范围分区(RANGE):

每一个分区中都包含能对应到一组特定值(范围)的一些行,适用的情景包括常用查询直接以对表进行分区的列为条件,或者需要通过删除表来快速删除旧数据时。

列示分区:

列示分区与范围分区类似。主要区别在于,列示分区模式允许根据 DBA 预先定义的值列表(而不是一系列连续值构成的范围)来对数据进行划分。

列分区:

列分区支持在分区键中使用多个列。这些列将用于决定在分区中放置那些行并在分区修剪操作中决定在哪那些行要清掉。列分区是对范围分区和列表分区的扩展。

散列分区(Hash Partition):

散列分区主要用于确保在预先设定数量的多个分区上平均分配数据。在范围分区和列表分区中,您必须明确指定特定列值存储在哪个分区中。而在散列分区中,MySQL 将自动为您做这个工作,您只需根据执行散列的列值和分区表所划分成的分区数量来指定列值或表达式即可。

线性散列分区是列表分区的一个变体,它使用一种更复杂的数据分区算法,可在处理 TB 级表时大幅提高添加、删除、合并和拆分分区的速度。

键分区:

键分区与散列分区类似,MySQL 通过一个系统生成的散列键来确保数据的平均分布,,而不是使用用户定义的表达式做散列分区。键分区支持在分区中使用各种类型的列数据。

子分区:

子分区支持对分区表中各个分区进行进一步划分,专用于处理超大型表,可将数据和索引分布在许多服务器和磁盘上。

分区修剪:

通过在查询中适时使用“WHERE”或“ON”子句,可确保 MySQL 优化器仅访问符合条件的分区。这样一来,查询执行速度将比未分区的表提高一个数量级。

三、常用分区类型的使用

RANGE分区使用:

CREATE TABLE `virus_daily` (
`id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
`day` date NOT NULL DEFAULT '0000-00-00',
`event_count` INT (11) NULL DEFAULT 0 COMMENT '事件数',
`ip_count` INT(11) NULL DEFAULT 0 COMMENT 'IP地址数',
PRIMARY KEY (`id`, `day`) --注意day这里必须定义为一个索引字段
)ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci PARTITION BY RANGE (to_days(`day`))(
PARTITION p1 VALUES LESS THAN (to_days('2013-12-03')),
PARTITION p2 VALUES LESS THAN (to_days('2013-12-04')),
PARTITION p3 VALUES LESS THAN (to_days('2013-12-05')),
PARTITION p4 VALUES LESS THAN (to_days('2013-12-06')),
PARTITION p5 VALUES LESS THAN (to_days('2013-12-07')),
PARTITION p6 VALUES LESS THAN (to_days('2013-12-08')),
PARTITION p7 VALUES LESS THAN (to_days('2013-12-09')),
PARTITION p8 VALUES LESS THAN (to_days('2013-12-10'))
);

基于这种分区方案,将每天的数据存放到一个分区当中,例如当:插入时间为2013-12-04的数据,该数据将被保存到p1这块分区当中。

linux

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

MySQL表分区的使用

MySQL表分区的使用:分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3开始支持Partition 一 分区和分表的概念 分区 根据指定的规则,将数据表中的行拆分为更小的数据集,随后分布于多个目录和磁盘中,MySQL从5.1.3
推荐度:
标签: 使用 数据库 分区
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top