MySQL Cluster磁盤數據表
從MySQL 5.1.6開始,可以將沒有索引的列存在磁盤上。之前的版本只能存在RAM裡面。
如果使用磁盤數據表,將undo log文件和表空間文件分離在不同文件系統,可以提高性能。這個手段可以通過符號鏈接來實現。
【磁盤數據對象】
表空間:其他磁盤數據對象的容器
undo日志文件:用作rollback的undo信息
日志文件組:一個或多個undo日志文件可以合成一個日志文件組,然後賦予一個表空間。
數據文件:存儲磁盤數據表數據。一個數據文件直接賦給一個表空間。
undo日志文件和數據文件是每個數據節點上真實的文件。缺省的,它們被置於DataDir目錄下的ndb_node_id_fs。
其中DataDir是在MySQL cluster的config.ini文件中指定。這裡node_id是指數據節點的node ID。
表空間和日志文件組不是真正的文件。
假設已經裝好MySQL Cluster,並且運行著MySQL 5.1.6或更新版本,那麼在磁盤上創建一個cluster表的基本步驟如下:
1.創建一個日志文件組,賦予其一個或多個日志文件。
2.創建表空間,將日志文件組,隨同一個或多個數據文件賦予此表空間。
3.使用此表空間作為數據存儲空間,創建一個磁盤數據表。
刪除表空間及日志文件順序:
drop table xxx;
alter tablespace xxx drop datafile 'xxx' engine ndb;
drop tablespace xxx engine ndb;
drop logfile group xxx engine ndb;
【將磁盤日志文件和數據文件分放在不同的磁盤上,有助於提高性能】
【存儲計算】
磁盤數據表的變長列將占用固定空間,對於每行來說,也就是占用最大空間。
在磁盤數據表中,TEXT和BLOB的前256個字節存於內存,其他的存放在磁盤上。
磁盤數據表的每一行要在內存裡面存放8個字節,以指向存放在磁盤上的數據。所以如果一行要存放在磁盤上數據少於8個字節,還不如都放在內存裡。
數據節點重啟時--initial選項並不移除磁盤數據文件,你得手工事先把他們干掉。