注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

MySQL内存表报错The table is full问题的处理办法  

2017-04-25 11:49:37|  分类: Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
手头有个项目,是由Ecshop二次或三次开发的,网站域名:http://www.pangutong.cn。最近却频繁出现了错误,提示[error] => The table 'dsc_sessions' is full。根据错误提示判断是dsc_sessions表满了,所以解决办法也很简单,直接执行下如下SQL语句即可。

truncate table `pgt`.`dsc_sessions`;

这个表是Ecshop模拟session存储临时信息用,内存表,有大小限制的。如果程序不及时清理session内存表就会造成的这样的错误,所以为了避免以后再次出现同样的错误,就必须修改includes/cls_session.php里的$max_life_time变量【这里仅以Ecshop为例,该变量为session过期时间,默认180000】,将之改为1000即可:

var $max_life_time = 1000; // SESSION 过期时间

如果session过期日期设置过大,而网站的访问量又高,旧的数据不能及时清除就会出这种错误。将过期时间根据网站情况相应调整,访问越大就要设置的越小。
下面再来介绍下MYSQL内存引擎的概念:
1)memory存储引擎跟其它表引擎并不一样,是使用存储在内存中的数据来创建表,而且所有的数据也是都存储在内存中。
2)每个基于memory存储引擎的表实际还是对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。但该文件只存储表的结构,而其数据文件,都是保存在内存中, 这样读写速度都会非常之快。
3)memory存储引擎默认使用哈希(HASH)索引,其索引速度要比使用B-+Tree型要快,当然如果希望使用B树型,在创建的时候也可以指定。
4)memory存储引擎数据都保存在内存中,重启,关机,死机这些数据都会消失。所以表的生命周期就很短,而且内存也是很有限的,记录总数也有限制。
这种内存临时表,大小跟两个参数有关,max_heap_table_size和tmp_table_size有关,使用如下SQL命令可以察看。

show VARIABLES like '%table_size%'

MySQL内存表报错The table is full问题的处理办法 - sinsunson - 天朝布衣田中码农参上
也可使用如下命令:

select @@max_heap_table_size as max_heap_table_size,@@tmp_table_size as tmp_table_size

而要想改变设置,也跟调整其它参数一样做就可,但是请记住,参数值要根据机器内存相应调整,而且更改后的参数针对原本已经存在的内存表并不起效,除非手工使用truncate,alter table,create talbe命令,或者重启mysql。
a)临时设置,执行SQL如下

SET @@max_heap_table_size = 64*1024*1024,@@tmp_table_size=64*1024*1024;

b)在mysql配置文件my.cnf里面添加下面两行,使得永久生效。

tmp_table_size = 64M
max_heap_table_size = 64M

c)直接使用ALTER TABLE tbl_name MAX_ROWS来调整内存表的最大记录数[这个倒是是实时生效]。

ALTER TABLE dsc_sessions MAX_ROWS=1000000000;

最后就是这两个参数的解释:
tmp_table_size :规定了内部内存临时表的最大值,每个线程都要分配。
max_heap_table_size:定义了用户可以创建的内存表(memory table)的大小,这个值用来计算内存表的最大行数值。
实际起作用的是tmp_table_size和max_heap_table_size中的最小值。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017