我的环境将使用 2-3 个集群节点。数据库模式最初是在不知道启用 NDBCLUSTER 的限制/规则的情况下设计的(大错误!我知道)。我注意到并想了解更多的一些事情:
(1) NDB Cluster 通常自动分区 NDBCLUSTER 表。所以当我试图检查我的表时,它显示里面有 2 个分区
mysql> explain partitions select * from my_request;
+----+-------------+------------+------------+------+
| id | select_type | table | partitions | type |
+----+-------------+------------+------------+------+
| 1 | SIMPLE | my_request | p0,p1 | ALL |
+----+-------------+------------+------------+------+
但是当我试图检查哪个记录进入哪个分区时,它给了我错误。为什么?
mysql> select * from my_request partition (p0);
ERROR 1747 (HY000): PARTITION () clause on non partitioned table
(2) 我的一些表将有数十亿条记录,我(成功地)将其BY RANGE
划分为每日/每周/每月。但是 NDBCLUSTER 只允许分区BY (LINEAR) KEY
。由于 PRIMARY KEY 是一个 UUID,我有点迷失了如何对表进行分区。
注意:分区不仅用于优化查询,还用于dump和备份(如dump 1y之前的数据)。我创建了一个事件和过程来检查分区来执行此操作。泰。
您可以对主键中列的子集进行分区。NDB 当前不支持删除分区。因此,要删除旧数据,需要使用带有适当 WHERE 子句的 DELETE 查询。