首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Cluster 磁碟表建立完整教學:Tablespace、Log File Group 與 Data File 實作

     編輯:MySQL 資料庫相關知識

MySQL Cluster 透過 Disk Data Objects 實現磁碟表,核心三大物件:

  • Tablespace:容器,關聯 Log File Group 與 Data Files
  • Log File Group:包含一或多個 Undo Log Files,儲存交易回滾資訊
  • Data Files:實際儲存表資料,直接關聯 Tablespace

所有物件共享命名空間,名稱必須唯一。Undo log 与 data files 為實體檔案,預設置於 DataDir 指定的 ndb_node_id_fs 目錄。

建立磁碟表標準流程(3 步驟)

1. 建立 Log File Group

CREATE LOGFILE GROUP lg_cloudstor
  ADD UNDOFILE 'cloudstor_undo_1.log'
  INITIAL_SIZE 200M
  UNDO_BUFFER_SIZE 20M
  ENGINE NDBCLUSTER;

-- 新增第二個 undo file
ALTER LOGFILE GROUP lg_cloudstor
  ADD UNDOFILE 'cloudstor_undo_2.log'
  INITIAL_SIZE 100M
  ENGINE NDBCLUSTER;

注意:若出現語法錯誤 (ERROR 1064),先執行 SET character_set_client=latin1; 再建立。

2. 建立 Tablespace

CREATE TABLESPACE ts_cloudstore
  ADD DATAFILE 'cloudstore_data_1.dbf'
  USE LOGFILE GROUP lg_cloudstor
  INITIAL_SIZE 100M
  AUTOEXTEND_SIZE 10M
  ENGINE NDBCLUSTER;

-- 新增第二個 data file
ALTER TABLESPACE ts_cloudstore
  ADD DATAFILE 'cloudstore_data_2.dbf'
  INITIAL_SIZE 100M
  AUTOEXTEND_SIZE 10M
  ENGINE NDBCLUSTER;

3. 建立磁碟表

CREATE TABLE Disktable (
  id INT AUTO_INCREMENT PRIMARY KEY,
  c1 VARCHAR(50) NOT NULL,
  c2 VARCHAR(30) DEFAULT NULL,
  c3 DATE DEFAULT NULL,
  INDEX(c1)
) TABLESPACE ts_cloudstore STORAGE DISK ENGINE NDBCLUSTER;

關鍵規則:只有無索引的欄位才能儲存於磁碟。上例中 c2、c3 存磁碟,id、c1(有索引)仍駐記憶體。

刪除順序(反向依賴)

  1. DROP TABLE Disktable;
  2. ALTER TABLESPACE ... DROP DATAFILE ...(逐個刪除)
  3. DROP TABLESPACE ts_cloudstore ENGINE NDBCLUSTER;
  4. DROP LOGFILE GROUP lg_cloudstor ENGINE NDBCLUSTER;

進階特性補充

  • TEXT/BLOB 前 256 bytes 存記憶體,餘下存磁碟
  • 每列需 8 bytes 記憶體指向磁碟資料
  • --initial 啟動集群不會刪除磁碟資料檔,需手動清理
  • 可查詢 INFORMATION_SCHEMA.FILES 檢視磁碟表資訊
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved