0

MariaDB 5.3 引入了动态列。据我了解,下一个版本的mysql应该有类似mariadb的功能吗?

我目前正在运行 mysql 5.5.9,我想弄乱每行的动态列。

所以我在 mysql 网站上阅读,以使其正常工作:

innodb_file_format 应设置为梭子鱼。

完毕。

--------------
show variables like "%innodb_file%"
--------------

+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+
| innodb_file_format       | Barracuda |
| innodb_file_format_check | ON        |
| innodb_file_format_max   | Barracuda |
| innodb_file_per_table    | ON        |
+--------------------------+-----------+
4 rows in set (0.00 sec)

然后我继续创建我的表进行测试

 CREATE TABLE `test` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `dyn` blob,
 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

然后我尝试插入

 insert into test(`dyn`) VALUES (COLUMN_CREATE(1, "black", 3, "Linux"))

我收到以下错误:

 FUNCTION db.COLUMN_CREATE does not exist

所以我的问题是mysql不提供这些功能吗?我应该切换到 mariadb 进行测试吗?

4

1 回答 1

2

根据文档,MySQL 似乎提供此功能。

动态行格式实际上提供了一种不同的方法来存储在某些情况下可能更有效的行,而不是一种具有可变表模式的方法:

当 innodb_file_format 设置为 Barracuda 并使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 创建表时,长列值完全离页存储,并且聚集索引记录仅包含指向溢出页的 20 字节指针。


如果您需要这种灵活的模式,请查看实体-属性-值模式。

于 2012-04-06T15:38:12.697 回答