Partitioning

ndbcluster 中的分區

  • November 22, 2018

我的環境將使用 2-3 個集群節點。db 模式最初是在不知道 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 只允許 partition BY (LINEAR) KEY。由於 PRIMARY KEY 是一個 UUID,我有點失去瞭如何對錶進行分區。

注意:分區不僅用於優化查詢,還用於轉儲和備份(如轉儲超過 1y 的數據)。我創建了一個事件和過程來檢查分區來執行此操作。泰。

您可以對主鍵中的列子集進行分區。NDB 目前不支持刪除分區。因此,要刪除舊數據,需要使用帶有適當 WHERE 子句的 DELETE 查詢。

引用自:https://dba.stackexchange.com/questions/222928