mysql cluster ndb 記憶體表和磁碟表
在ndb上可以建立兩種型別的表:
1、記憶體表:所有資料(包括index)都在記憶體中。同時會在磁碟上儲存資料,因此不用擔心資料會丟失,datanode會在啟動的時候把資料載入到記憶體。
2、磁碟表:僅主鍵、索引欄位儲存在記憶體中,其他欄位儲存在磁碟檔案裡。
預設ndb建立的表為記憶體表,
使用create table 的 tablespace tsname storage disk 來建立磁碟表。
建立磁碟表需要的Disk Data Objects:
Tablespaces: act as containers for other Disk Data objects.
Undo log files: undo information required for rolling back transactions.
One or more undo log files are assigned to a log file group, which is then assigned to a tablespace.
Data files :store Disk Data table data. A data file is assigned directly to a tablespace.
建立磁碟表物件的步驟:
1、建立undo日誌檔案組:
CREATE LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_1.log'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE 2M
ENGINE NDBCLUSTER;
給日誌組增加日誌檔案:
ALTER LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_2.log'
INITIAL_SIZE 12M
ENGINE NDBCLUSTER;
2、建立表空間:
CREATE TABLESPACE ts_1
ADD DATAFILE 'data_1.dat'
USE LOGFILE GROUP lg_1
INITIAL_SIZE 32M
ENGINE NDBCLUSTER;
給表空間增加日誌檔案:
ALTER TABLESPACE ts_1
ADD DATAFILE 'data_2.dat'
INITIAL_SIZE 48M
ENGINE NDBCLUSTER;
注意:上面增加的日誌檔案和資料檔案的資訊儲存在information_schema.FILES表裡。
3、建立磁碟表:
CREATE TABLE dt_1 (
member_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
last_name VARCHAR(50) NOT NULL,
first_name VARCHAR(50) NOT NULL,
dob DATE NOT NULL,
joined DATE NOT NULL,
INDEX(last_name, first_name)
)
TABLESPACE ts_1 STORAGE DISK
ENGINE NDBCLUSTER;
使用ndb_desc工具檢視ndb表的資訊:
-- ndb_t1 --
Version: 4
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 310
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
HashMap: DEFAULT-HASHMAP-3840-2
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY --記憶體
name Longvarchar(300;utf8_general_ci) NULL AT=MEDIUM_VAR ST=DISK --磁碟
name2 Longvarchar(300;utf8_general_ci) NULL AT=MEDIUM_VAR ST=DISK
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
0 1 1 32768 0 67108864 66452880
1 3 3 32768 0 67108864 66451632
附:
網上有人說alter table ... tablespace ... storage disk 能夠把表從記憶體錶轉換為磁碟表。
我在5.6.14-ndb-7.3.3上的實驗是不行。show create table命令生成的SQL並不能正確反映是記憶體表還是磁碟表,應使用ndb_desc工具來檢視。
參考:http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-disk-data-objects.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/195110/viewspace-1095399/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql臨時表和記憶體表MySql記憶體
- 【轉載】MySQL之臨時表和記憶體表MySql記憶體
- mysql最大表記憶體MySql記憶體
- mysql複製和記憶體引擎的表MySql記憶體
- MySQL NDB Cluster和Galera Cluster的主要特性和優缺點介紹MySql
- MySQL NDB Cluster,Galera Cluster和Percona XtraDB Cluster優缺點總結MySql
- MySQL-37:記憶體臨時表MySql記憶體
- 記憶體表和臨時表的區別記憶體
- 記憶體表(FDMEMTABLE)記憶體
- optee記憶體管理和頁表建立記憶體
- MySQL NDB Cluster簡介及環境搭建MySql
- 記憶體(memory)表和臨時(temporary)表之瞭解記憶體
- 記憶體和磁碟設計記憶體
- Mysql ndb-cluster centos6.4 簡單配置MySqlCentOS
- 記憶體技術詞彙表記憶體
- oracle-記憶體表(轉)Oracle記憶體
- delphi 新版記憶體表 FDMemTable記憶體
- SQL Server表駐留記憶體和檢測SQLServer記憶體
- Linux-記憶體和磁碟管理Linux記憶體
- mysql 記憶體表The table 'pvlogs' is full問題處理MySql記憶體
- PL/SQL表(oracle記憶體表)---table()函式用法SQLOracle記憶體函式
- memory儲存引擎 /MySQL記憶體表的特性與使用介紹儲存引擎MySql記憶體
- 印象系列-磁碟和記憶體的基本認識記憶體
- Docker之CPU和記憶體磁碟設定(八)Docker記憶體
- RabbitMQ - 記憶體磁碟監控MQ記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- 關於快閃記憶體磁碟記憶體
- MySQL優化表和分析表MySql優化
- MySQL 全域性表和表鎖MySql
- 分析String在記憶體中的表現記憶體
- Oracle調優-常用表KEEP到記憶體中Oracle記憶體
- Keep小表到記憶體,提高訪問速度記憶體
- Fdmemtable 記憶體表儲存圖片的例子記憶體
- 【MYSQL】mysql5.7-bug -information_schema的表被查詢可能導致記憶體洩漏MySqlORM記憶體
- 檢視mysql表大小和記錄數MySql
- MySQL記憶體管理MySql記憶體
- MySQL記憶體使用MySql記憶體
- oracle中的cluster表Oracle