当前位置:  数据库>mysql

mysql创建内存表的方法

    来源: 互联网  发布时间:2014-10-13

    本文导语:  如何创建内存表?创建内存表非常的简单,只需注明 ENGINE= MEMORY 即可: 代码如下:CREATE TABLE  `tablename` ( `columnName` varchar(256) NOT NUL) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=100000000; 注意: 当内存表中的数据大于max_heap_table_size设定的容...

如何创建内存表?
创建内存表非常的简单,只需注明 ENGINE= MEMORY 即可:

代码如下:

CREATE TABLE  `tablename` ( `columnName` varchar(256) NOT NUL) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=100000000;

注意:

当内存表中的数据大于max_heap_table_size设定的容量大小时,mysql会转换超出的数据存储到磁盘上,因此这是性能就大打折扣了,所以我们还需要根据我们的实际情况调整max_heap_table_size,例如在.cnf文件中[mysqld]的下面加入:
max_heap_table_size = 2048M
另外在建表语句中还可以通过MAX_ROWS来控制表的记录数。

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

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

2、仅适合使用的场合。heap不允许使用xxxTEXT和xxxBLOB数据类型;只允许使用=和操作符来搜索记录(不允许、=);不支持auto_increment;只允许对非空数据列进行索引(not null)。
注:操作符 “” 说明:NULL-safe equal.这个操作符和“=”操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。

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

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

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

a、在任何查询之前,执行一次简单的查询,判断heap表是否存在数据,如果不存在,则把数据重新写入,或者DROP表重新复制某张表。这需要多做一次查询。不过可以写成include文件,在需要用该heap表的页面随时调用,比较方便。
b、对于需要该heap表的页面,在该页面第一次且仅在第一次查询该表时,对数据集结果进行判断,如果结果为空,则需要重新写入数据。这样可以节省一次查询。
c、更好的办法是在mysql每次重新启动时自动写入数据到heap,但是需要配置服务器,过程比较复杂,通用性受到限制。

6、一些预期可能用到的sql语句

代码如下:

//如果表存在,则删除
DROP TABLE IF EXISTS `abc`;
//复制整张表xyz为heap表abc(包含所有数据)
CREATE TABLE `abc` type=heap select * from `xyz`;
//添加主键id
ALTER TABLE `abc` ADD PRIMARY KEY (`id`);
//添加索引username
ALTER TABLE `abc` ADD INDEX `abc` (`username`);

    
 
 

您可能感兴趣的文章:

  • 在linux下如何将cpu和内存的使用率保存到mysql或者日志文件中?
  • 关于使用c程序对mysql数据操作造成内存不断减少的问题
  • IBM THINKPAD 380D 16M内存 /2G硬盘 能装什么版本的LINUX 主要是想学PHP+MYSQL+APACHE下的网站开发?
  • mysql 数据库中my.ini的优化 2G内存针对站多 抗压型的设置
  • 解析mysql 缓存如何使用内存
  • MySQL内存表的特性与使用介绍
  • 浅析MySQL内存的使用说明(全局缓存+线程缓存)
  • mySQL占用虚拟内存达8百多兆问题解决思路
  • 100分求:1块146G硬盘8G内存的服务器,安装WEB和MYSQL服务,怎么样做LINUX分区比较合适?
  • 急!linux下mysql的创建用户组和创建用户命令不能生效啊????
  • mysql 添加索引 mysql 如何创建索引
  • MySQL里Create Index 能否创建主键 Primary Key
  • 请问MYSQL 创建的数据库在什么地方(路径)我用的是REDHAT7。3并用RPM安装
  • MySQL外键创建失败1005原因汇总
  • MySQL5创建存储过程的示例
  • Mysql启动与数据库的创建方法[图文]
  • 在Mysql上创建数据表实例代码
  • MySQL 创建主键,外键和复合主键的语句
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • mysql创建函数出现1418错误的解决办法
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • php mysql创建临时表的例子
  • MySQL学习笔记2:数据库的基本操作(创建删除查看)
  • mysql外键(Foreign Key)介绍和创建外键的方法
  • 如何使用JSP+MySQL创建留言本(一)
  • mysql创建Bitmap_Join_Indexes中的约束与索引
  • 解析MySQL创建外键关联错误 - errno:150
  • 用MySQL创建数据库和数据库表代码
  • MySQL动态创建表,数据分表的存储过程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • mysql修改用户密码的方法和mysql忘记密码的解决方法
  • linux mysql登陆出错 mysql升级方法
  • MySql报错Table mysql.plugin doesn’t exist的解决方法
  • mysql启动错误之mysql启动报1067错误解决方法
  • php连接不上mysql但mysql命令行操作正常的解决方法
  • MySQL降权运行之MySQL以Guests帐户启动设置方法
  • mysql修改密码的三方法和忘记root密码的解决方法
  • mysql解决远程不能访问的二种方法
  • 强制修改mysql的root密码的六种方法分享(mysql忘记密码)
  • 修改mysql密码与忘记mysql密码的处理方法
  • linux忘记mysql密码处理方法
  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )
  • MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)
  • mysql Master-Master-Slaves有谁会么?求教linux下mysql Master-Master-Slaves配置方法
  • mysql中文排序注意事项与实现方法
  • mysql 查看版本的方法图文演示
  • Mysql启动与数据库的创建方法[图文] iis7站长之家
  • mysql 提示INNODB错误的解决方法
  • 免安转MySQL服务的启动与停止方法
  • windows7下启动mysql服务出现服务名无效的原因及解决方法
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3