深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 878|回复: 0
打印 上一主题 下一主题

对"the table is full"问题的试验报告

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2020-4-4 14:45:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


smt.r_ap_temp表是内存表
insert into smt.r_ap_temp values ('12345656789','1234567989556fdfdfdfdfdfdfd','1234567989556fdfdfdf',
'1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf',
'1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf','1234567989556fdfdfdf',
'1234567989556fdfdfdf','1234567989556fdfdfdf',now());


对该表连续插入9310行后提示:
错误码: 1114
The table 'r_ap_temp' is full


当前的数据库参数:
show VARIABLES like '%table_size%';
max_heap_table_size=16777216=16M
tmp_table_size=31457280=30M


试验一: 不重启数据库的情况下,修改这两个参数值 ,对 已经存在的内存表不起作用
set global max_heap_table_size=167772160
set global tmp_table_size=314572800
select @@max_heap_table_size
select @@tmp_table_size

是的, 参数变大后, 依然无法插入!


试验二:接上面的情况, 临时修改参数后, 如果trunc表,是否会成效
truncate smt.r_ap_temp
证明一半对一半不对!
因为修改的是全局变量, 本地变量没有变, 如果在这个session情况下truncate表,再插入也只能插入9310
但如果是在一个新的SESSIOn中做的truncate表, 本地变量已经变了,这时可以插入更多的数据了

试验三:接上面的情况,这里如果重启了数据库
发现只能插入9310

试验四:只改max_heap_table_size(增大一倍), 不改tmp_table_size(不变)
可插入18620

试验五:不改tmax_heap_table_size(不变), 改tmp_table_size(小一半)
可以插入9310

试验六:不改tmax_heap_table_size(不变), 改tmp_table_size(小到10分之一)
也可以插入9310,为什么  ?????

试验七: 设置MAX_ROWS
ALTER TABLE smt.r_ap_temp MAX_ROWS=50000;
也可以插入9310,为什么  ?????

试验八:不改tmax_heap_table_size(不变), 改tmp_table_size(大10倍)
建立临时表, 无论插入多少,都不报错



结论:
1.内存表只受max_heap_table_size的影响
2.临时表超过大小也不会报错,只能转为本地数据


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 01:36 , Processed in 0.021419 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表