`

mysql学习(3)

阅读更多
mysql创建临时表:
CREATE TEMPORARY TABLE temp1(myname VARCHAR(10) NOT NULL);
create temporary table if not exists temp_CalOpenBox( rowIdx int(11) not null auto_increment, opentype int,pernum int, PRIMARY KEY (`rowIdx`)) engine=memory;

mysql创建内存表:
 CREATE TABLE  `tablename` ( `columnName` varchar(256) NOT NUL) ENGINE=MEMORY DEFAULT CHARSET=utf8 MAX_ROWS=10000;



原文地址:http://blog.csdn.net/yueliangdao0608/article/details/4526241
内存表和临时表的区别:
看到很多朋友对这些概念有些混淆,我来发表下我自己的观点。

内存表:
1. 参数控制:max_heap_table_size
2. 到达上线后报错。
3. 表定义保存在磁盘上,数据和索引保存在内存里面。
4. 不能包含TEXT,BLOB等字段。
临时表:
1. 参数控制:tmp_table_size。
2. 到达上线后创建文件在磁盘上。
3. 表定义和数据都在内存里。
4. 可以包含TEXT, BLOB等字段。


而且tmp_table_size和max_heap_table_size的范围挺复杂。
有三个范围: global, session, table。 而且都适用。

内存表创建,转载地址http://www.blogjava.net/huyi2006/articles/208867.html

  创建内存表非常的简单,只需注明 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学习资料大全"包含了一系列的资源,对于想要学习或深入理解MySQL的人来说,是一份非常宝贵的资料集。 首先,从标题我们可以推断,这份资料可能涵盖了MySQL的基础到进阶内容,包括安装配置、SQL语言基础、...

    mysql学习用数据库dbt3

    在这个“mysql学习用数据库dbt3”压缩包中,包含了一个名为“dbt3_s1.sql”的文件,这通常是用来初始化或恢复数据库的SQL脚本。 在学习MySQL的过程中,理解数据库的设计和管理至关重要。DBT3提供了一种实践环境,让...

    MySQL数据库学习教程从入门到进阶全套笔记

    【MySQL学习3】提到了图形管理工具,如MySQL Workbench,它们提供友好的用户界面,简化了数据库的管理。 接着,【MySQL学习4】和【MySQL学习5】详细讲解了DDL(Data Definition Language)和DML(Data Manipulation...

    MySQL学习资料PDF

    这份压缩包包含的三本书籍是MySQL学习的重要资源,涵盖了从基础到高级的全方位知识。 《MySQL必知必会》这本书是MySQL入门的经典之作,适合对数据库没有基础知识的读者。它详细介绍了MySQL的基本操作,包括如何创建...

    Mysql学习资料大全

    本“Mysql学习资料大全”包含了一系列关于MySQL的教程和参考资料,旨在帮助初学者和经验丰富的开发者深入理解和熟练掌握MySQL的各项功能。 首先,从简介及连接部分开始,这部分内容会涵盖MySQL的基本概念,如数据库...

    MYSQL最全的学习资料

    个人推荐mysql学习资料, 很不错,好东西不但要珍藏,还要分享

    MySQL学习源码(MySQL入门教程).zip

    MySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL...

    数据库mysql学习脑图

    本资源“数据库mysql学习脑图”旨在为MySQL初学者提供一个清晰的学习路径,帮助理解其核心概念和功能。 首先,脑图将可能涵盖数据库基础,包括数据库的概念、数据模型(如层次模型、网状模型、关系模型)以及SQL...

    机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计

    机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习...

    mysql学习资料(9本)

    这份“mysql学习资料(9本)”的压缩包包含了丰富的学习资源,适合不同层次的学习者,从初学者到经验丰富的开发者都能从中受益。 1. **MYSQL 5.5从零开始学.pdf**:这本书可能是一本入门教程,从MySQL 5.5版本的基础...

    官方mysql5.6学习手册

    官方MySQL5.6学习手册是关于MySQL版本5.6的一份详细参考指南,其中还包含了基于NDB Cluster 7.3及7.4版本的参考指南。这份手册的文档范围覆盖了从MySQL 5.6到5.6.44版本,以及NDB Cluster 7.3版本的5.6.43-ndb-7.3....

    mySQL学习资料.rar

    这个“mySQL学习资料.rar”压缩包很可能包含了一系列关于MySQL的学习材料,如教程、手册、示例脚本和使用指南,旨在帮助初学者和进阶者深入理解和掌握MySQL。 首先,让我们来探讨一下MySQL的基础知识。MySQL的核心...

    MySQL学习笔记 MySQL学习笔记

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用...学习MySQL不仅涉及理论知识,还需要大量的实践操作来熟悉其语法和功能。掌握MySQL能让你在数据管理、Web开发和系统集成等领域具备更强的竞争力。

    Mysql学习常用资料

    本文将深入探讨MySQL的学习和安全配置。 首先,对于初学者来说,掌握MySQL的基础操作至关重要。例如,通过命令行工具启动和停止MySQL服务,如`mysqld-shareware --install`来安装服务,然后使用`net start mysql`...

    MySql的用法学习MySql用的,比较合适

    3. 表结构设计:学习如何创建和设计高效的表结构,包括主键、外键、索引的使用,以及如何进行规范化设计以减少数据冗余。 4. 查询优化:掌握JOIN操作、子查询、聚合函数等高级查询技术,以及如何通过EXPLAIN分析...

    mysql数据库学习手册.docx

    《MySQL学习手册》主要针对Windows平台,深入浅出地介绍了如何管理和使用MySQL数据库系统。以下是对MySQL的安装、Workbench的使用以及基本的数据库操作的详细说明。 1. MySQL的下载与安装: 要安装MySQL,首先访问...

    MYSQL学习资料

    MySQL Proxy应用入门 3 使用MySQL Proxy MySQL UDF Mysql Proxy安装配置测 MySQL5 5 Semi synchronous Replication(半同步复制) mysqlslap MySQL压力测试工具 mysql proxy安装配置 mysql 触发器 mysql与MongoDB...

    MySQL 学习路线.xmind

    MySQL最全学习线路图 超级详细版

    mysql数据库学习资料

    这份学习资料主要涵盖了MySQL的基础操作,包括数据库的管理、表的操作以及数据的增删改查。 首先,我们讨论一下如何启动和停止MySQL服务。在Windows操作系统中,你可以通过命令行工具执行以下命令来启动和停止MySQL...

    mysql初级学习建议

    在开始学习 MySQL 时,首先要理解其基本概念和术语,如数据库、表、字段、记录和索引等。关系型数据库管理系统将数据组织成多个相互关联的表,这种方式提高了数据的灵活性和查询效率。MySQL 使用 GPL(GNU 通用公共...

Global site tag (gtag.js) - Google Analytics