mySQL临时Table已满
mySQL Temporary Table is Full
我正在尝试使用以下语法创建临时 mySQL table 并将其加载到内存中,但 运行 进入 "Table is full" 错误:
CREATE TEMPORARY TABLE IF NOT EXISTS tmpHistory ENGINE=MEMORY SELECT * FROM history ORDER BY date ASC;
我的原始历史记录 InnoDB table 大约有 300 万行和大约 300mb。我增加了以下两个服务器变量的默认值 16mb:
max_heap_table_size = 536870912
tmp_table_size = 536870912
我 运行 mySQL 在 AWS r3.xlarge 上,这是一个 4 核盒子,内存为 30.5GB。
我已经查看了 this SO guidance 但我仍然 运行 进入 Table is Full 错误。我是使用内存引擎的新手,因此欢迎任何建议。
找出您使用 engine=memory 创建的所有表
select table_name,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
from information_schema.tables
where table_schema = 'db1' and engine = 'memory';
使用top命令查看哪个进程正在消耗多少内存。如果表很大,请避免使用内存。考虑像 Amazon RedShift 这样的列存储。
max_heap_table_size
,而不是 tmp_table_size
控制任何后续 MEMORY
table.
的最大大小
MEMORY
有几个怪癖。也许这一点你:VARCHARs
变成了CHARs
。因此,如果 VARCHAR(255)
是 CHARACTER SET utf8
.
,则每行需要 765 个字节
为什么要把一个完美的InnoDBtable复制到一个MEMORYtable中?为了避免磁盘命中?不...如果 innodb_buffer_pool_size
足够大,InnoDB table 将有效地存在于 RAM 中。加快速度?不一定,因为 InnoDB 有行锁但是 MEMORY 只有 table 锁。
请提供SHOW CREATE TABLE
;可能还有其他事情可以反对您正在做的事情and/or 解释为什么会出现错误。
我正在尝试使用以下语法创建临时 mySQL table 并将其加载到内存中,但 运行 进入 "Table is full" 错误:
CREATE TEMPORARY TABLE IF NOT EXISTS tmpHistory ENGINE=MEMORY SELECT * FROM history ORDER BY date ASC;
我的原始历史记录 InnoDB table 大约有 300 万行和大约 300mb。我增加了以下两个服务器变量的默认值 16mb:
max_heap_table_size = 536870912
tmp_table_size = 536870912
我 运行 mySQL 在 AWS r3.xlarge 上,这是一个 4 核盒子,内存为 30.5GB。
我已经查看了 this SO guidance 但我仍然 运行 进入 Table is Full 错误。我是使用内存引擎的新手,因此欢迎任何建议。
找出您使用 engine=memory 创建的所有表
select table_name,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
from information_schema.tables
where table_schema = 'db1' and engine = 'memory';
使用top命令查看哪个进程正在消耗多少内存。如果表很大,请避免使用内存。考虑像 Amazon RedShift 这样的列存储。
max_heap_table_size
,而不是 tmp_table_size
控制任何后续 MEMORY
table.
MEMORY
有几个怪癖。也许这一点你:VARCHARs
变成了CHARs
。因此,如果 VARCHAR(255)
是 CHARACTER SET utf8
.
为什么要把一个完美的InnoDBtable复制到一个MEMORYtable中?为了避免磁盘命中?不...如果 innodb_buffer_pool_size
足够大,InnoDB table 将有效地存在于 RAM 中。加快速度?不一定,因为 InnoDB 有行锁但是 MEMORY 只有 table 锁。
请提供SHOW CREATE TABLE
;可能还有其他事情可以反对您正在做的事情and/or 解释为什么会出现错误。