一、引言

昨天下午老大让我查资料看一下mysql的内存表在主从备份中是否能被复制,我还没听说过内存表呢,于是上网查资料,记录一下,以便查阅、学习

二、进展

参考:

http://www.cnblogs.com/sunss/p/3191137.html

内存表:
复制代码
session
$ mysql -uroot
root@(none) ::>use test
Database changed
root@test ::>CREATE TABLE tmp_memory (i INT) ENGINE = MEMORY;
Query OK, rows affected (0.00 sec)
root@test ::>insert into tmp_memory values ();
Query OK, row affected (0.00 sec)
root@test ::> session2
$ mysql -uroot test
root@test ::>CREATE TABLE tmp_memory (i INT) ENGINE = MEMORY;
ERROR (42S01): Table 'tmp_memory' already exists
root@test ::>select * from tmp_memory;
+------+
| i |
+------+
| |
+------+
row in set (0.00 sec)
复制代码
. 多个session,创建表的名字不能一样 . 一个session创建会话后,对其他session也是可见的
. data目录下只有tmp_memory.frm ,表结构放在磁盘上,数据放在内存中
. mysql 重启或者关闭后内存表里的数据会丢失,但是表结构仍然存在
. 可以创建索引,删除索引,支持唯一索引
. 不影响主备,主库上插入的数据,备库也可以查到
. show tables 看得到表

http://www.cnblogs.com/sunss/archive/2011/03/16/1986050.html

  “内存表”顾名思义创建在内存中的表,真是这样吗?其实不然,MySQL的内存表,表结构创建在磁盘上,数据存放在内存中,所以当MySQL启动着的时候,这个表是存在的,数据也是存在的,如果用户有查看这个表的权限,在所有会话里面,都可以访问这个内存表的数据;当MySQL重启后,数据消失,结构还存在。

内存表的创建:

CREATE TABLE test(
id int(),
num int()
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
查看是否创建成功: show tables;
使用完内存表后,如果我们想释放掉占用掉的内存,可以有两种方法:
-- 删除数据
delete from test;
或者 -- 清空表
truncate table test;
再或者
-- 删除表
drop table test;
对于我们常用的功能来说,内存有以下特征: .对于varchar等变长类型,内存表使用固定的长度来存放; .内存表可以有非唯一键; .内存表不能包含BLOB或者TEXT列; .内存表支持AUTO_INCREMENT列; .内存表支持插入延迟,使读取优先; .非临时内存表和其它非内存表一样在所有客户端直接共享; 我们使用内存表的时候,需要注意以下几个方面: .服务器内存足够大; .我们创建的内存表和MySQL内部临时表有所不同: 内存表的数据存放在内存中,而内部临时表(我们的query语句产生的)在恰当的时候存放在内存中,当内部临时表变得很大时,MySQL会自动地把它转化为 在磁盘上存储的表,而我们创建的内存表,却不会自动转换。 .当我们单独地delete from 某个内存表的时候,不会回收内存;只有当整个表被delete的时候,才会回收内存; .在MySQL的主从服务器上,内存表可以被复制

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html (mysql官方文档,英文不好,参考的不多,英文还需继续努力)

自己的实践--mysql单机

可见执行insert into tblName select * from heapTbl;是可以将数据复制的。

实践--mysql主备--结构:192.168.0.161:2000--192.168.0.161:2001

.在2000节点上创建内存数据库testHeap并插入数据
create table testHeap(i int) type=heap;
在2001节点上show tables是可以看到testHeap的,并且是有数据的。 .在2001节点上对表testHeap插入一些数据
在2000节点上select * from testHeap;是可以看到新数据的。

三、结论

内存表在主从备份结构中是可以被复制的。

mysql之内存表的更多相关文章

  1. MySQL的内存表(转)

    说明:MySQL内存表可以提升一些临时业务的查询,比如做Session的共享,一些类似缓存的数据等. “内存表”顾名思义创建在内存中的表,真是这样吗?其实不然,MySQL的内存表,表结构创建在磁盘上, ...

  2. mysql的内存表和临时表

    内存表: session $ mysql -uroot root@(none) ::>use test Database changed root::>CREATE TABLE tmp_m ...

  3. 解决mysql的内存表“table is full”错误

    最后参考http://blog.sina.com.cn/s/blog_6942a1590101429h.html 来解决,摘录下核心 后来GOOGLE得知,需要重建该表才可以. 1. 设置新的参数 m ...

  4. 关于mysql内存表的一个帖子(转载)

    地址:http://bbs.csdn.net/topics/360030699 引用楼主 zgycsmb 的回复:问:1mysql的内存表性能怎么样2mysql的内存表与system v 这种共享内存 ...

  5. MySQL内存表-临时表

    HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引.但如果MySQL或者服务器重新启动,表中数据将会丢失.用法:如论坛的在线人数统计,这种表的数据应该是无关紧要的,就几个简单的字 ...

  6. MySQL内存表的特性与使用介绍

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. Mysql内存表的用处

    文章出自:http://blog.csdn.net/hitzhang/article/details/5994639 个人最欣赏mysql的地方就是他存储引擎的多样性和可扩展性,这样mysql也能拥有 ...

  8. MySQL内存表的特性与使用介绍 -- 简明现代魔法

    MySQL内存表的特性与使用介绍 -- 简明现代魔法 MySQL内存表的特性与使用介绍

  9. MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录

    MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录 MySQL内存表(MEMORY)说明

随机推荐

  1. TensorFlow环境搭建及安装教程

    1.安装虚拟环境virtualenv相关配置(创建了python3.5的环境) 2.http://docs.nvidia.com/cuda/cuda-installation-guide-linux/ ...

  2. Django出现的错误1.TypeError: view must be a callable or a list/tuple in the case of include().1.TypeError: view must be a callable or a list/tuple in the case of include().

    .TypeError: view must be a callable or a list/tuple in the case of include(). 原因: url(r"^upload ...

  3. DevExpress 中 汉化包 汉化方法

    刚试了一下,直接把汉化包放在 Debug 目录下也是可以的.直接会汉化 第一步: 在Debug 下添加 zh-CN 汉化包(自行下载) 第二步: 在 Program.cs中添加以下代码 : Syste ...

  4. [视频解说]Java(JDK的下载安装及第一个程序执行)

    (JDK的下载安装及第一个程序执行) 内容:Java JDK 的安装以及HelloWorld 程序的执行 欢迎童鞋们前往围观 http://v.youku.com/v_show/id_XODA3Mzk ...

  5. (转)Linux下内存映射文件的用法简介

    简介: 内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对 ...

  6. JVM组成部分以及内存模型

    一.JVM的组成部分 我们先把JVM这个虚拟机实现机制画出来,例如以下图所看到的: 从这个图中能够看到,JVM是执行在操作系统之上的,它与硬件没有直接的交互. 我们再来看下JVM有哪些组 成部分,例如 ...

  7. Spark1.0.0 history server 配置

    在执行Spark应用程序的时候,driver会提供一个webUI给出应用程序的执行信息.可是该webUI随着应用程序的完毕而关闭port,也就是说,Spark应用程序执行完后,将无法查看应用程序的历史 ...

  8. docker中的link

    一.查看容器的详细情形 docker inspect 容器id/名称 二.为什么要用link 容器每次重启时,ip都会变动,这不利于前端引用中连接数据库. 三.link docker run -p 8 ...

  9. mui ajax方法

    mui ajax方法详解: mui提供了mui.ajax,在此基础上有分装出mui.get()/mui.getJSON()/mui.post()三个方法. mui.ajax( url [,settin ...

  10. 【VBA编程】13.Workbook对象的事件

    Workbook事件用于响应对Workbook对象所进行的操作. [BeforeClose事件] BforeClose事件用于响应窗口关闭的操作 在工程资源器中,双击“ThisWorkbook”对象, ...