在上周的文章中,我们了解了在处理大型数据集时利用数据库分区的潜在用途和优势。在今天的后续文章中,我们将使用哈希分区准则在 Navicat for MySQL 中创建一个 MySQL 分区。
在 Navicat 中启动分区对话框
在 Navicat 中,你会在表设计器的“选项”选项卡(页面底部)中找到“分区”按钮:
点击此按钮可打开“分区”对话框。
在表上创建哈希分区
“分区”对话框中的第一个控件是分割由下拉菜单:
支持的分区类型取决于数据库类型和版本。以下是你可以在 Navicat 中找到 MySQL 7 的选项:
- Range partitioning(范围分区):范围(或间隔)分区在组织类似数据时很有用,特别是日期和时间数据。因此,范围分区非常适合对历史数据进行分区。
- List partitioning(列表分区):根据离散值将行显式映射到分区。例如,南部各州的所有客户可以存储在一个分区中,而北部各州的客户可以存储在不同的分区中。
- Composite partitioning(复合分区):基于分区键标识的多维分区。例如,你可能决定以只读、压缩格式存储特定产品类型的数据,并保持其他产品类型数据未压缩。复合分区还显着增加了分区数量,这可能有利于高效并行执行。
- Round-robin partitioning(循环分区):以循环方式将行分配给每个分区,以便每个分区包含或多或少相等的行数,并实现负载平衡。在这种情况下,没有分区键,因此行在所有分区中随机分布。
- Hash partitioning(哈希分区):基于历史数据在分区之间随机分布数据,而不是将相似的数据分组。尽管可以识别分区键,但在不知道应该驻留在哪个分区数据中的情况下仍很有用。因此,数据的分布使其不对应于业务或数据的逻辑视图,就像范围分区中那样。
一些注意事项
为了从分区中受益,你需要确保:
- 如果你确实提供了对表进行分区的列,则它是该表中每个唯一键的一部分。
- 你正在用查询中最常用的列对表进行分区。否则,创建分区将没有任何好处。
定义分区详细信息
“分区”对话框支持许多选项,包括子分区以及手动创建分区定义的能力。但是,对于简单的哈希分区,我们只需要提供分区准则、(表列)和分区数:
点击“确定”按钮,只需简单的一步即可创建分区!
在“SQL 预览”选项卡中,你可以查看 Navicat 生成的 SQL 语句
ALTER TABLE `sakila2`.`film` PARTITION BY HASH (actor) PARTITIONS 10 (PARTITION `p0` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p1` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p2` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p3` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p4` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p5` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p6` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p7` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p8` MAX_ROWS = 0 MIN_ROWS = 0 , PARTITION `p9` MAX_ROWS = 0 MIN_ROWS = 0 ) ;
总结
在今天的文章中,我们使用哈希分区准则在 Navicat for MySQL 中创建了一个 MySQL 分区。
如果你对 Navicat for MySQL 感兴趣,可以免费试用 14 天!
Rob Gravelle 居住在加拿大渥太华,是一名有 20 多年经验的 IT 专家。过往,Rob 曾为与情报有关的组织(如加拿大边境服务局和各种商业组织)构建系统。在业余时间,Rob 是一名出色的吉他演奏家,他拥有多张 CD 和数字发行版。