`
walksing
  • 浏览: 217051 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何在mysql中创建内存表 --- 转

阅读更多
如何在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-connector-java-5.1.37-jar

    MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。本资源提供的"mysql-...

    mysql-connector-java-5.1.49.jar

    在Java应用中,如JIRA(一个流行的项目管理和问题跟踪工具),MySQL Connector/J发挥着至关重要的作用。当JIRA需要与MySQL数据库进行交互时,例如存储和检索数据,这个驱动程序会作为中间层,处理JDBC API调用,并将...

    mysql-8.0.21-el7-x86-64.tar.gz

    在系统环境变量中添加MySQL的路径,以便系统能找到MySQL的可执行文件。编辑`/etc/profile`或`~/.bashrc`文件,添加: ``` export PATH=$PATH:/path/to/mysql-8.0.21-el7-x86_64/bin ``` 别忘了替换`/path/to/`...

    MySQL-connector-java-8.0.28

    在这个版本中,8.0.28 提供了对最新MySQL服务器特性的支持,以及对性能和稳定性的优化。 首先,我们来看一下Java连接MySQL的基本过程。在Java应用中,要连接MySQL数据库,你需要导入MySQL JDBC驱动的类库,也就是...

    mysql for Linux (mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz )

    MySQL是世界上最受欢迎的开源数据库系统之一,尤其在Linux操作系统中广泛应用。`mysql-standard-4.1.22-pc-linux-gnu-i686.tar.gz` 是一个针对Linux平台的MySQL服务器版本的压缩包,适用于Intel x86架构。这个特定的...

    最新的mysql的jar包,mysql-connector-java-8.0.12

    在分布式环境中,如果应用需要高可用性和负载均衡,`mysql-connector-java-8.0.12`也可以与MySQL的复制和集群配置协同工作,自动发现和重路由到可用的数据库实例。 总之,`mysql-connector-java-8.0.12`是连接Java...

    mysql-5.7.32-linux-glibc-2.28-aarch64.tar.gz

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,特别是在Web应用程序中。MySQL 5.7.32是该系统的一个重要版本,提供了许多性能优化、安全增强和功能改进。在本篇文章中,我们将深入探讨针对arm架构的MySQL 5.7....

    mysql-connector-java-5.1.46.jar

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的驱动程序,使得Java开发者能够方便地在Java应用中访问MySQL数据库。"mysql-connector-java-...

    mysql-connector-java-5.1.24-bin.jar.zip

    MySQL Connector/J是MySQL数据库系统与Java应用程序之间的桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用程序中访问MySQL数据库。"mysql-connector-...

    mysql-connector-java-5.1.30-bin.zip

    总之,`mysql-connector-java-5.1.30-bin.jar`是Java开发者连接MySQL数据库的重要工具,通过它,你可以编写Java应用程序来创建、读取、更新和删除MySQL数据库中的数据,实现丰富的数据库操作。同时,理解和掌握JDBC...

    mysql-connector-java-5.1.40.jar.zip

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的驱动程序,允许Java开发者在应用中访问和操作MySQL数据库。`mysql-connector-java-5.1.40.jar`是...

    mysql-server-mysql-8.3.0.tar.gz

    3. **窗口函数**:这是MySQL 8.0引入的新特性,允许在查询中执行复杂的计算,如排名、累计和分组,而无需使用子查询或自连接。 4. **JSON支持**:MySQL 8.x增强了对JSON数据类型的支持,提供了更丰富的JSON操作函数...

    mysql-installer-community-8.0.26.0.msi

    1. **InnoDB引擎优化**:InnoDB作为MySQL的默认存储引擎,在8.0版本中进行了大量的优化,包括更快的插入速度、更高的并发性和更小的内存占用。 2. **窗口函数**:MySQL 8.0引入了SQL标准的窗口函数,允许用户在分组...

    mysql-connector-odbc-win32.msi

    MySQL Connector/ODBC 是 MySQL 数据库管理系统的一个重要组件,它为 Windows 操作系统提供了一个 ODBC(Open ...无论是在桌面应用程序还是 web 应用中,MySQL Connector/ODBC 都能提供高效、可靠的数据库连接服务。

    mysql-5.7.40-linux-glibc2.12-x86-64.tar.gz 离线安装包

    MySQL是世界上最受欢迎的关系型数据库管理系统(RDBMS)之一,尤其在Web应用程序中广泛使用。本文将详细讨论MySQL 5.7.40版本在Linux-glibc2.12环境下的离线安装过程,适用于x86_64架构的系统。 首先,`mysql-5.7....

    mysql-installer-community-8.0.34.0.msi

    MySQL是世界上最受欢迎的开源数据库管理系统之一,而`mysql-installer-community-8.0.34.0.msi`是一个用于Windows系统的安装程序包,旨在帮助用户便捷地在他们的计算机上安装MySQL社区版8.0.34.0。这个安装程序是...

    mysql-connector-odbc-5.1.13-win32

    2. 配置数据源:在 Windows 控制面板中,通过“ODBC 数据源管理器”创建一个新的系统 DSN(数据源名称),输入 MySQL 服务器的相关信息,如主机名、端口、数据库名、用户名和密码。 3. 开发应用程序:在编程环境中,...

    mysql-connector-java-8.0.15.jar

    在Java代码中,可以通过以下方式创建数据库连接: ```java import java.sql.Connection; import java.sql.DriverManager; public class Main { public static void main(String[] args) { String url = "jdbc:...

    mysql-essential-5.0.22-win32.msi

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其在企业级应用中被广泛使用。"mysql-essential-5.0.22-win32.msi" 是MySQL的一个特定版本,适用于Windows 32位操作系统。这个版本是MySQL Essential Edition...

    mysql-connector-java-8.0.13.jar.zip

    MySQL是世界上最受欢迎的开源数据库系统之一,而`mysql-connector-java-8.0.13.jar`是一个重要的组件,它是MySQL官方提供的Java数据库连接器,用于在Java应用程序中与MySQL数据库进行通信。这个JAR(Java Archive)...

Global site tag (gtag.js) - Google Analytics