无法在Amazon Aurora上使用MEMORY引擎创建表

时间:2019-11-06 23:11:56

标签: mysql database innodb amazon-rds-aurora

使用https://dev.mysql.com/doc/refman/5.6/en/storage-engine-setting.html中的示例,在我的AWS Aurora服务器上执行以下操作:

CREATE TABLE t3 (i INT) ENGINE = MEMORY;

我得到的答复如下:

0 row(s) affected, 1 warning(s): 1266 Using storage engine InnoDB for table 't3';

为什么不使用MEMORY引擎?根据{{​​1}}的支持...

2 个答案:

答案 0 :(得分:1)

https://dba.stackexchange.com/a/186989/2703包含以下声明,据报道该声明来自AWS支持:

  

Aurora旨在仅支持常规表的InnoDB存储引擎。仅InnoDB以外的引擎仅支持会话级临时表。在默认配置下,当您尝试使用除InnoDB之外的存储引擎创建表时,Aurora会将表隐式创建为InnoDB。会话级临时表不是永久性的,会话完成后将被删除。

答案 1 :(得分:1)

Aurora正在将myisam和内存表转换为innodb。

mysql> create table mem_tbl( a int(11) ) engine=memory;
Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> show warnings;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Note  | 1266 | Using storage engine InnoDB for table 'mem_tbl' |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table mem_tbl \G
*************************** 1. row ***************************
       Table: mem_tbl
Create Table: CREATE TABLE `mem_tbl` (
  `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
1 row in set (0.00 sec)

由于Aurora会执行基于磁盘的复制,并且如果当前写入器发生故障,则会发生自动故障转移,因此内存表将不安全。我假设这是在考虑到这些功能的情况下做出的决定

相关问题