mysql cluster 内存_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工具来查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值