今天收到报错:[ERROR] mysqld: The table 'pvlogs' is full,数据无法写入,影响业务,看到这个错,我首先想到是不是空间满了,查看之后发现是正常的,通过查询和询问同事才知道,原来这个内存引擎的表。
首先理解下内存引擎的概念:
MEMORY存储引擎:
(1)memory存储引擎相比前面的一些存储引擎,有点不一样,其使用存储在内存中的数据来创建表,而且所有的数据也都存储在内存中。
(2)每个基于memory存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该文件只存储表的结构,而其数据文件,都是存储在内存中,这样有利于对数据的快速处理,提高整个表的处理能力。
(3)memory存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,如果读者希望使用B树型,则在创建的时候可以引用。
(4)memory存储引擎文件数据都存储在内存中,如果mysqld进程发生异常,重启或关闭机器这些数据都会消失。所以memory存储引擎中的表的生命周期很短,一般只使用一次。
解决办法:
方法一:
查看内存表大小相关参数
MariaDB [log]> show VARIABLES like '%max_heap_table_size%';
+---------------------+-----------+
| Variable_name | Value |