Documentation Home

13.1.17.7 设置 NDB 注释选项

在 NDB Cluster 中,CREATE TABLEorALTER TABLE 语句中的列注释也可用于指定 NDB_COLUMN选项。NDB 7.3 和 7.4 支持单列注释选项 MAX_BLOB_PART_SIZE;此选项的语法显示如下:

Press CTRL+C to copy
COMMENT 'NDB_COLUMN=MAX_BLOB_PART_SIZE[={0|1}]'

符号及其后面的=值是可选的。使用 0 或 1 以外的任何值都会导致语法错误。

此选项的作用是将 TEXTor 列的 blob 部分大小设置为(13948)BLOB支持的最大字节数。NDB此选项可应用于 MySQL 支持的任何 blob 列类型,但TINYBLOBor TINYTEXT ( BLOB, MEDIUMBLOB, LONGBLOB, TEXT, MEDIUMTEXT, orLONGTEXT除外)。

要查看此选项的效果,我们首先在mysql客户端中运行以下 SQL 语句来创建一个包含两BLOB列的表,一列 ( c1) 没有额外选项,另一列 ( c2) 包含 MAX_BLOB_PART_SIZE

Press CTRL+C to copy
mysql> CREATE TABLE test.t ( -> p INT PRIMARY KEY, -> c1 BLOB, -> c2 BLOB COMMENT 'NDB_COLUMN=MAX_BLOB_PART_SIZE' -> ) ENGINE NDB; Query OK, 0 rows affected (0.32 sec)

在系统 shell 中,运行ndb_desc 实用程序以获取有关刚创建的表的信息,如本例所示:

Press CTRL+C to copy
$> ndb_desc -d test t -- t -- Version: 1 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: 324 Row Checksum: 1 Row GCI: 1 SingleUserMode: 0 ForceVarPart: 1 FragmentCount: 2 ExtraRowGciBits: 0 ExtraRowAuthorBits: 0 TableStatus: Retrieved HashMap: DEFAULT-HASHMAP-3840-2 -- Attributes -- p Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY c1 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_22_1 c2 Blob(256,13948,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_22_2 -- Indexes -- PRIMARY KEY(p) - UniqueHashIndex PRIMARY(p) - OrderedIndex

输出中的列信息列在 Attributes; 对于列c1c2它在此处以强调文本显示。对于c1,blob 部分大小为 2000,默认值;对于c2,它是 13948,由 设置 MAX_BLOB_PART_SIZE

NDB您可以使用如下语句更改表 的给定 blob 列的 blob 部分大小, ALTER TABLE然后使用以下语句验证更改SHOW CREATE TABLE

Press CTRL+C to copy
mysql> ALTER TABLE test.t -> DROP COLUMN c1, -> ADD COLUMN c1 BLOB COMMENT 'NDB_COLUMN=MAX_BLOB_PART_SIZE', -> CHANGE COLUMN c2 c2 BLOB AFTER c1; Query OK, 0 rows affected (0.47 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE test.t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE `t` ( `p` int(11) NOT NULL, `c1` blob COMMENT 'NDB_COLUMN=MAX_BLOB_PART_SIZE', `c2` blob, PRIMARY KEY (`p`) ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> EXIT Bye

ndb_desc 的输出显示列的 blob 部分大小已按预期更改:

Press CTRL+C to copy
$> ndb_desc -d test t -- t -- Version: 16777220 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: 324 Row Checksum: 1 Row GCI: 1 SingleUserMode: 0 ForceVarPart: 1 FragmentCount: 2 ExtraRowGciBits: 0 ExtraRowAuthorBits: 0 TableStatus: Retrieved HashMap: DEFAULT-HASHMAP-3840-2 -- Attributes -- p Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY c1 Blob(256,13948,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_26_1 c2 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_26_2 -- Indexes -- PRIMARY KEY(p) - UniqueHashIndex PRIMARY(p) - OrderedIndex NDBT_ProgramExit: 0 - OK

必须使用复制来更改列的 blob 部分大小ALTER TABLE;此操作不能在线执行(请参阅 第 18.6.12 节,“在 NDB Cluster 中使用 ALTER TABLE 进行在线操作”)。

有关如何NDB 存储 blob 类型的列的更多信息,请参阅 字符串类型存储要求