0

MariaDB5.3では動的列が導入されました。私の理解から、mysqlの次のバージョンはmariadbが持っているのと同様の機能を持つべきですか?

私は現在mysql5.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に切り替える必要がありますか?

4

1 に答える 1

2

ドキュメントに基づくと、MySQL はこの機能を提供していないようです。

動的な行形式は、実際には、可変テーブル スキーマを持つ方法ではなく、場合によってはより効率的な行を格納するための別の方法を提供します。

innodb_file_format が Barracuda に設定され、テーブルが ROW_FORMAT=DYNAMIC または ROW_FORMAT=COMPRESSED で作成される場合、長い列の値は完全にオフページに格納され、クラスター化されたインデックス レコードにはオーバーフロー ページへの 20 バイトのポインターのみが含まれます。


このような柔軟なスキーマが必要な場合は、entity-attribute-valueパターンを確認してください。

于 2012-04-06T15:38:12.697 に答える