Partitioning
ndbcluster 中的分區
我的環境將使用 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 只允許 partitionBY (LINEAR) KEY
。由於 PRIMARY KEY 是一個 UUID,我有點失去瞭如何對錶進行分區。注意:分區不僅用於優化查詢,還用於轉儲和備份(如轉儲超過 1y 的數據)。我創建了一個事件和過程來檢查分區來執行此操作。泰。
您可以對主鍵中的列子集進行分區。NDB 目前不支持刪除分區。因此,要刪除舊數據,需要使用帶有適當 WHERE 子句的 DELETE 查詢。