博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL分区
阅读量:6331 次
发布时间:2019-06-22

本文共 1161 字,大约阅读时间需要 3 分钟。

hot3.png

分区主要分为垂直分区和水平分区两种:

垂直分表将一个N1+N2个字段的表Tab拆分成N1字段的子表Tab1和(N2+1)字段的子表Tab2;

其中子表Tab2包含了关于子表Tab1的主键信息,否则两个表的关联关系就会丢失。

当然垂直分表会带来程序端SQL的修改,若是应用程序已经应用很长的一段时间,然后程序的升级将是耗时而且易出错的,即升级的代价将会很大。

水平分区技术将一个表拆成多个表,比较常用的方式是将表中的记录按照某种Hash算法进行拆分,

简单的拆分方法如取模方式。

同样,这种分区方法也必须对前端的应用程序中的SQL进行修改方可使用。

而且对于一个SQL,它可能会修改两个表,那么你必须得写成2个SQL语句从而可以完成一个逻辑的事务,使得程序的判断逻辑越来越复杂,这样也会导致程序的维护代价高,也就失去了采用数据库的优势。

因此,分区技术可以有力地避免如上的弊端,成为解决海量数据存储的有力方法。

SHOW VARIABLES命令来确定MySQL是否支持分区

show variables like "%partition%" ; +-------------------+-------+ | Variable_name     | Value | +-------------------+-------+ | have_partitioning | YES   | +-------------------+-------+

MySQL 分区引擎在一个单独的层中运行,并且可以和任何这样的层进行相互作用

同一个分区表的所有分区必须使用同一个存储引擎

为某个分区表配置一个专门的存储引擎,必须且只能使用[STORAGE] ENGINE 选项

[STORAGE] ENGINE必须列在用CREATE TABLE语句中的其他任何分区选项之前

可以通过使用用来创建分区表的CREATE TABLE语句的PARTITION子句的DATA DIRECTORY(数据路径)INDEX DIRECTORY(索引路径)选项,为每个分区的数据和索引指定特定的路径。

MAX_ROWSMIN_ROWS选项可以用来设定最大和最小的行数,它们可以各自保存在每个分区里。

分区类型:

Range分区  基于属于一个给定连续区间的列值
List分区 基于列值匹配一个离散值集合中的某个值来进行选择
Hash分区 用户定义表达式的返回值来进行选的分区
Key分区 KEY分区只支持计算一列或多列

分区总是在创建时就自动的顺序编号,且从0开始记录

当有一新行插入到一个分区表中时,就是使用这些分区编号来识别正确的分区

参考文献:

转载于:https://my.oschina.net/darionyaphet/blog/265647

你可能感兴趣的文章
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>
Combinations
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
查看>>
Orchard 视频资料
查看>>
简述:预处理、编译、汇编、链接
查看>>
调试网页PAIP HTML的调试与分析工具
查看>>
路径工程OpenCV依赖文件路径自动添加方法
查看>>
玩转SSRS第七篇---报表订阅
查看>>
WinCE API
查看>>
POJ 3280 Cheapest Palindrome(DP 回文变形)
查看>>
oracle修改内存使用和性能调节,SGA
查看>>
SQL语言基础
查看>>
对事件处理的错误使用
查看>>
最大熵模型(二)朗格朗日函数
查看>>
深入了解setInterval方法
查看>>