我的环境将使用2-3个集群节点。数据库模式最初是在不知道NDBCLUSTER的限制/规则的情况下设计的(大错误!我知道)。有些事情我注意到,并想了解更多:
(1) NDB群集通常自动分区NDBCLUSTER表。因此,当我试图检查我的表时,它显示出里面有两个分区。
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。因为主键是UUID,所以我有点失去了如何对表进行分区。
注意:分区不仅用于优化查询,还用于转储和备份(比如转储大于1Y的数据)。我创建了一个事件和过程来检查分区来完成这个任务。泰。
发布于 2018-11-22 12:28:56
您可以在主键中列的子集上进行分区。NDB目前不支持删除分区。因此,要消除旧数据,需要使用带有适当WHERE子句的DELETE查询。
https://dba.stackexchange.com/questions/222928
复制相似问题