Google Cloud SQL MySQL第二代实例是否支持MEMORY存储引擎?
Google Cloud SQL MySQL第二代:MEMORY引擎临时表的例外情况
你观察得非常准确!Google Cloud SQL的MySQL第二代实例FAQ里明确说明InnoDB是唯一受支持的存储引擎,但这个限制其实只针对持久化的常规表——对于会话级的临时表,MEMORY引擎确实是可以正常使用的,这是一个容易被忽略的细节。
下面是你实验中的操作语句及结果,验证了这一点:
执行的SQL命令
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 |
背后的原因
这种设计的逻辑很清晰:临时表是会话专属的,MEMORY引擎的临时表更是完全在内存中运行,会话结束后就会自动销毁,不会写入到Cloud SQL的持久化存储中。而官方对存储引擎的限制核心是为了保证持久化数据的可靠性、备份恢复兼容性以及Cloud SQL的管理能力,临时表不在这个限制范围内,所以可以灵活使用MEMORY引擎来提升某些临时计算场景的性能。
内容的提问来源于stack exchange,提问作者tback
相关产品推荐
相关产品推荐

