【问题标题】:MySQL dynamic columns - column_create does not existMySQL 动态列 - column_create 不存在
【发布时间】:2012-04-20 04:42:43
【问题描述】:

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

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

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

innodb_file_format 应该设置为 Barracuda。

完成。

--------------
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 进行测试吗?

【问题讨论】:

    标签: mysql innodb mariadb dynamic-tables


    【解决方案1】:

    基于documentation,MySQL 似乎提供此功能。

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

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


    如果您需要如此灵活的架构,请查看entity-attribute-value 模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2020-06-10
      • 1970-01-01
      相关资源
      最近更新 更多