zoukankan      html  css  js  c++  java
  • MySQL的内存表

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

    内存表的创建:

    CREATE TABLE test(
    id
    int(10),
    num
    int(10)
    ) ENGINE
    =MEMORY DEFAULT CHARSET=utf8;

    查看是否创建成功:

    show tables;
    使用完内存表后,如果我们想释放掉占用掉的内存,可以有两种方法:

    -- 删除数据
    delete
    from test;

    或者

    -- 清空表
    truncate
    table test;
    再或者

    -- 删除表
    drop
    table test;

    对于我们常用的功能来说,内存有以下特征:

    1.对于varchar等变长类型,内存表使用固定的长度来存放;

    2.内存表可以有非唯一键;

    3.内存表不能包含BLOB或者TEXT列;

    4.内存表支持AUTO_INCREMENT列;

    5.内存表支持插入延迟,使读取优先;

    6.非临时内存表和其它非内存表一样在所有客户端直接共享;

    我们使用内存表的时候,需要注意以下几个方面:

    1.服务器内存足够大;

    2.我们创建的内存表和MySQL内部临时表有所不同:

          内存表的数据存放在内存中,而内部临时表(我们的query语句产生的)在恰当的时候存放在内存中,当内部临时表变得很大时,MySQL会自动地把它转化为 在磁盘上存储的表,而我们创建的内存表,却不会自动转换。

    3.当我们单独地delete from 某个内存表的时候,不会回收内存;只有当整个表被delete的时候,才会回收内存;

    4.在MySQL的主从服务器上,内存表可以被复制

    参考资料:

    http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

  • 相关阅读:
    SQL联合更新
    Service Oriented Architecture and WCF
    ubuntu10.4 中安装中文输入法
    QT WINDOWS QTCreator
    QImage,QPixmap,QBitmap,QPicture
    一、Qt Creator的安装和hello world程序的编写
    解决ubuntu打开windows下保存的txt文件中文乱码问题
    Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程
    虚拟机VMware Workstation v6.5官方正式版+汉化补丁+算号器(附安装及使用图解教程)(转)
    决定你是穷人还是富人的12条
  • 原文地址:https://www.cnblogs.com/sunss/p/1986050.html
Copyright © 2011-2022 走看看