千家信息网

MySQL数据库内存表的特性与用法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"MySQL数据库内存表的特性与用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"MySQL数据库内存表的特性与用法"吧!内存表,就是放在
千家信息网最后更新 2026年10月31日MySQL数据库内存表的特性与用法

本篇内容主要讲解"MySQL数据库内存表的特性与用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"MySQL数据库内存表的特性与用法"吧!

内存表,就是放在内存中的表,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,内存表与临时表并不相同,临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_size = 128M设定。当数据超过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降,而内存表不会,内存表满后,会提示数据满错误。

  临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存表。

  创建表是,用engine=heap可创建(mysql5.5中已经不支持type,以后都用engine,形成习惯)。

create table test(    id int unsigned not null auto_increment primary key,    state char(10),    type char(20),    date char(30))ENGINE=MEMORY DEFAULT CHARSET=utf8;
CREATE TABLE lookup(id INT, INDEX USING HASH (id))ENGINE = MEMORY;   CREATE TABLE lookup(id INT, INDEX USING BTREE (id))ENGINE = MEMORY;

  ·内存表初始化,可以使用--init-file来初始化,避免重启mysql后数据被清空。比如--init-file="/data/mysql/init.sql", init.sql格式为:

use db_test;select *** into m_table;

  ·在数据库复制时,如果主机当掉,则会在binLog中自动加入delete from [内存表],将slave的数据也删除掉,以保证两边的数据一致性。

  ·内存表不支持事务。

  ·内存表是表锁,当修改频繁时,性能可能会下降。

  内存表的使用

  内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制。

  ·heap对所有用户的连接是可见的,这使得它非常适合做缓存。

  ·仅适合使用的场合。heap不允许使用xxxTEXT和xxxBLOB数据类型。注:操作符 "<=>" 说明:NULL-safe equal.这个操作符和"="操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。

  ·一旦服务器重启,所有heap表数据丢失,但是heap表结构仍然存在,因为heap表结构是存放在实际数据库路径下的,不会自动删除。重启之后,heap将被清空,这时候对heap的查询结果都是空的。

  ·如果heap是复制的某数据表,则复制之后所有主键、索引、自增等格式将不复存在,需要重新添加主键和索引,如果需要的话。

  ·对于重启造成的数据丢失,有以下的解决办法:

  在任何查询之前,执行一次简单的查询,判断heap表是否存在数据,如果不存在,则把数据重新写入,或者DROP表重新复制某张表。这需要多做一次查询。不过可以写成include文件,在需要用该heap表的页面随时调用,比较方便。

  对于需要该heap表的页面,在该页面第一次且仅在第一次查询该表时,对数据集结果进行判断,如果结果为空,则需要重新写入数据。这样可以节省一次查询。

  更好的办法是在mysql每次重新启动时自动写入数据到heap,但是需要配置服务器,过程比较复杂,通用性受到限制。

  小记录,MyISAM与InnoDB互转:

// InnoDB转MyISAM
ALTER TABLE `tablename` ENGINE = MYISAM
// MyISAM转InnoDB
alter table tablename type=innodb;
ALTER TABLE `tablename` ENGINE = InnoDB

到此,相信大家对"MySQL数据库内存表的特性与用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 内存 查询 数据库 特性 性能 操作符 结果 页面 最大 相同 内容 办法 实际 所得 更多 服务器 格式 第一次 索引 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 互联网科技有限公司经营范围 猪兼强互联网科技 小马过河互联网科技 银优互联网科技有限公司 有木互联网科技 互联网实体化科技化 新华互联网科技2019 全球顶尖互联网科技公司 重庆互联网医院沙龙医盟信息科技 河南猎农互联网科技有限公司 知域互联网科技有限公司大骗子 开一家科技互联网公司需要多少钱 美国互联网科技实力 21世纪互联网科技成就 江苏互联网智能科技软件 西安有哪些互联网高科技企业 昆明中奇联合互联网科技 互联网科技创业计划的风险分析 互联网高科技绘画 杭州互联网科技公司 云电互联网科技 大白互联网科技 互联网 科技服务平台 宁夏众和广鑫互联网科技有限公司 互联网还是高科技吗 天津腾达互联网科技有限公司 南博望互联网科技有限公司 广西泛欧互联网科技有限公司 互联网科技创新方面的资料
0