我正在阅读有关使用MEMORY ENGINE表格的表格(存储在ram中的表格).
是否可以使用CREATE TABLE AS SELECT语法,但是创建了表格MEMORY ENGINE吗?
MEMORY表的大小是否有限制?可以创建一个MEMORY表,它是一个pysical 1.5 GB表的副本?
Alm*_* Do 22
是的,它可以完成,但不能使用简单的语法CREATE TABLE t AS SELECT ...- 您需要在完整语句中指定表列,Sample:
CREATE TABLE t (col1 INT(11), col2 INT(11))
ENGINE=MEMORY
AS
SELECT * FROM another_t
Run Code Online (Sandbox Code Playgroud)默认情况下,表的最大大小为16Mb,但可以使用max_heap_table_size服务器系统变量进行调整.但请注意,这个限制是每个引擎 - 不是每个表.即你所有的memory桌子都会分享它.要限制单个表的大小,您需要对会话值进行操作max_heap_table_size,例如
mysql> SET max_heap_table_size = 24*1024*1024;
Run Code Online (Sandbox Code Playgroud)你也可以这样创建一个临时表:
CREATE TEMPORARY TABLE IF NOT EXISTS tmp ENGINE=MEMORY AS (
SELECT 'abc' As tomcat, 'def' As apache);
Run Code Online (Sandbox Code Playgroud)
或者这样:
CREATE TEMPORARY TABLE IF NOT EXISTS tmp ENGINE=MEMORY AS (
SELECT tomcat, apache From servers);
Run Code Online (Sandbox Code Playgroud)
请注意,第一个选项将创建两列作为varchar(3),同时第二个选项将导入原始表中的任何列信息,甚至是它们的注释.
| 归档时间: |
|
| 查看次数: |
21215 次 |
| 最近记录: |