GoogleCloudSQL FAQ指出
对于MySQL第二代实例,InnoDB是唯一支持的存储引擎
我的实验表明,至少对于临时表,engine=memory
是可能的。
CREATE TEMPORARY TABLE mt (c CHAR(20)) ENGINE=memory;
Query OK, 0 rows affected
SHOW CREATE TABLE mt;
+---------+----------------+
| Table | Create Table |
|---------+----------------|
| mt | CREATE TEMPORARY TABLE `mt` (
`c` char(20) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8 |
+---------+----------------+
1 row in set
Time: 0.022s
INSERT INTO mt (c) VALUES ('waaa' );
Query OK, 1 row affected
Time: 0.017s
SELECT * FROM mt;
+------+
| c |
|------|
| waaa |
+------+
1 row in set
Time: 0.019s
这是可用的但未被采纳的吗?谷歌可能会在不通知的情况下禁用它吗?这是否只是被排除在FAQ之外,因为信息是应该使用innodb而不是myisam?
谢谢你的时间。
即使可以使用MEMORY表来创建表(仅限临时表),Google Cloud也不支持它,因为它不能提供与InnoDB引擎相同的一致性,并且可能容易出错。
此外,在具有第二代MySQL的较新的Cloud SQL实例中,使用InnoDB以外的任何存储引擎都会导致错误,例如:
ERROR 3161 (HY000): Storage engine MEMORY is disabled (Table creation is disallowed)
截至目前,对于使用第二代MySQL的Cloud SQL实例,唯一支持的存储引擎是InnoDB。如果您可以在实例上使用 MEMORY 引擎,则表示它是旧版本。由于不支持MEMORY引擎,因此正如您评论的那样,Google可能会禁用此功能,恕不另行通知。
我的建议是,虽然现在您可以将MEMORY引擎用于Cloud SQL实例中的临时表,但请坚持使用InnoDB引擎,因为它是Google支持的唯一引擎。提到MyISAM的相同消息也适用于其他存储引擎。