`
meiowei
  • 浏览: 147115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql内存表

阅读更多

如何创建内存表
    创建内存表非常的简单,只需注明 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`);

分享到:
评论

相关推荐

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

    MySQL内存表,也称为HEAP表,是一种存储引擎,它将数据存储在内存中,以实现快速的读写操作。这种类型的表对于处理大量小规模数据的查询特别有用,因为它们能够利用内存的高速访问来提升性能。在MySQL中,内存表的...

    Mysql构造百万条测试数据

    1. 生成思路:利用 MySQL 内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中。 知识点:MySQL 的内存表(Memory Engine)是一种特殊的存储引擎,可以将数据存储在内存...

    MySQL8.0内存相关参数总结

    MySQL8.0内存相关参数是优化数据库性能的关键因素,它们决定了数据库如何管理和使用内存资源,以提高查询效率和系统稳定性。下面将详细解释几个重要的内存参数及其作用。 1. **innodb_buffer_pool_size**: 这是...

    一张图弄清mysql内存结构

    一张图弄清mysql内存结构,内存中都有什么,多mysql原理及后续问题排查、优化很有帮助,推荐给大家

    MySQL错误代码查询

    MySQL内存表(MEMORY引擎)大小有限制,当达到最大容量时,会触发此错误。考虑增大内存表大小限制,或使用其他存储引擎。 通过了解这些常见的MySQL错误代码,你可以更快地诊断和解决问题,提高数据库操作的效率。在...

    -MySQL内存统计的分析与实践.pptx

    MySQL内存统计的分析与实践是数据库管理员(DBA)在日常工作中必须掌握的一项关键技能。内存管理对于MySQL数据库的性能有着深远影响,而有效地分析和理解内存使用情况可以帮助优化数据库性能,预防并解决内存溢出等...

    mysql 学习总结

    为了解决这个问题,可以使用如Redis这样的持久化内存数据库,或者设置MySQL内存表的自动持久化策略。 在实际应用中,合理地创建和使用索引,选择合适的存储引擎,以及理解不同数据库类型的特点,都是优化数据库性能...

    MySql内存数据库.pdf

    本文档将探讨MySQL中内存数据库的创建、数据表的创建、数据查询以及数据操作的相关知识点。 1. 数据库操作命令 在MySQL中,可以使用SQL命令来对数据库进行操作。例如: - `CREATE DATABASE;`:创建一个新的数据库...

    Mysql临时表和派生表

    ### MySQL临时表与派生表详解 #### 一、MySQL临时表 **1.1 临时表概述** MySQL中的临时表是一种特殊的表类型,主要用于存储临时数据或中间结果集,适用于那些需要多次查询同一结果集的场景。根据存储位置的不同,...

    既然Mysql有内存引擎Memory,为什么还需要Redis

    既然Mysql有内存引擎Memory,为什么还需要Redis 随着对于Mysql的了解,我们知道Mysql有三种常用的数据引擎,分别是:MYISAM,INNODB,MEMORY。其中由于MYISAM不支持事务,行锁等原因的限制,被MySQL官方也逐渐放弃,...

    MySQL优化中的内存计算公式

    本文将详细介绍MySQL内存计算公式,并基于该公式对相关参数进行深入解析。 #### 二、MySQL内存计算公式 根据所提供的内容,MySQL内存占用计算公式如下: \[ \text{MySQLUsedMem} = \text{KeyBufferSize} + \text{...

    2G内存的MYSQL数据库服务器优化

    ### 2G内存的MySQL数据库服务器优化 在IT行业中,对于资源有限的环境进行数据库优化是一项挑战性工作,尤其是在仅有2GB内存的情况下对MySQL数据库服务器进行优化。这种优化旨在提高性能的同时确保系统的稳定运行。 ...

    MySQL OOM(内存溢出)的解决思路

    OOM全称”Out Of Memory”,即内存溢出。 内存溢出已经是软件开发历史上存在了近40年的“老大难”问题。在操作系统上运行各种软件时,软件所需申请的内存远远超出了物理内存所承受的大小,就叫内存溢出。 内存溢出...

    MySQL大表性能优化方案 和 MySQL高性能表设计规范

    在数据库管理领域,MySQL是广泛使用的开源关系型数据库系统,尤其在处理大数据量时,其性能优化和高效表设计显得尤为重要。本篇文章将深入探讨针对MySQL大表的性能优化策略以及如何遵循高性能的表设计规范。 一、...

    【荐】mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)

    本文档旨在详细介绍一套已在生产环境中经过验证、适用于16GB内存环境下的MySQL服务性能优化方案。通过对my.cnf/my.ini配置文件的各项关键参数进行中文注释与解析,帮助DBA及运维人员更好地理解每个配置项的作用及其...

    航空公司应用中的MySQL内存存储引擎.pdf

    航空公司应用中的MySQL内存存储引擎 MySQL 是一种开源关系型数据库管理系统,广泛应用于航空公司的信息系统。为提高航空公司应用中的数据存储和管理效率,本文提出了一种用内存存储引擎管理航空公司基础数据的方法...

Global site tag (gtag.js) - Google Analytics