Navicat 博客

如何使用 Navicat 对 MySQL 表进行分区 2021 年 7 月 23 日,由 Robert Gravelle 撰写

上周的文章中,我们了解了在处理大型数据集时利用数据库分区的潜在用途和优势。在今天的后续文章中,我们将使用哈希分区准则在 Navicat for MySQL 中创建一个 MySQL 分区。

在 Navicat 中启动分区对话框

在 Navicat 中,你会在表设计器的“选项”选项卡(页面底部)中找到“分区”按钮:

partition_button (65K)

点击此按钮可打开“分区”对话框。

在表上创建哈希分区

“分区”对话框中的第一个控件是分割由下拉菜单:

partition_by_dropdown (17K)

支持的分区类型取决于数据库类型和版本。以下是你可以在 Navicat 中找到 MySQL 7 的选项:

  • Range partitioning(范围分区):范围(或间隔)分区在组织类似数据时很有用,特别是日期和时间数据。因此,范围分区非常适合对历史数据进行分区。
  • List partitioning(列表分区):根据离散值将行显式映射到分区。例如,南部各州的所有客户可以存储在一个分区中,而北部各州的客户可以存储在不同的分区中。
  • Composite partitioning(复合分区):基于分区键标识的多维分区。例如,你可能决定以只读、压缩格式存储特定产品类型的数据,并保持其他产品类型数据未压缩。复合分区还显着增加了分区数量,这可能有利于高效并行执行。
  • Round-robin partitioning(循环分区):以循环方式将行分配给每个分区,以便每个分区包含或多或少相等的行数,并实现负载平衡。在这种情况下,没有分区键,因此行在所有分区中随机分布。
  • Hash partitioning(哈希分区):基于历史数据在分区之间随机分布数据,而不是将相似的数据分组。尽管可以识别分区键,但在不知道应该驻留在哪个分区数据中的情况下仍很有用。因此,数据的分布使其不对应于业务或数据的逻辑视图,就像范围分区中那样。

一些注意事项

为了从分区中受益,你需要确保:

  • 如果你确实提供了对表进行分区的列,则它是该表中每个唯一键的一部分。
  • 你正在用查询中最常用的列对表进行分区。否则,创建分区将没有任何好处。

定义分区详细信息

“分区”对话框支持许多选项,包括子分区以及手动创建分区定义的能力。但是,对于简单的哈希分区,我们只需要提供分区准则、(表列)和分区数:

partition_dialog (60K)

点击“确定”按钮,只需简单的一步即可创建分区!

在“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 和数字发行版

Navicat 文章
频道条目
分享
文章归档