玩传奇论坛

 找回密码
立即注册

扫一扫,访问移动社区

论坛喇叭+ 发布

01-25 10:01
系统通知全站压缩包解压密码:www.wanmirbbs.com
01-25 10:01
01-25 10:01
查看: 1934|回复: 1
打印 上一主题 下一主题

[文本教程] MySQL存储引擎,MyISAM、InnoDB、MEMORY、MERGE

[复制链接]
跳转到指定楼层
楼主
发表于 2017-11-18 07:57:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,以游结友!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前言
在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好 坏,将直接影响着整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎。等一下 ,存储引擎?什么是存储引擎?
什么是存储引擎?
关系数据库表是用 于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。 有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据 时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数 据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以 根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。这篇博文将总结 和分析各个引擎的特点,以及适用场合,并不会纠结于更深层次的东西。我的学习方法是先学会用,懂得 怎么用,再去知道到底是如何能用的。下面就对MySQL支持的存储引擎进行简单的介绍。
MyISAM
在mysql客户端中,使用以下命令可以查看MySQL支持的引擎。

  • show engines;
MyISAM表是独立于操作系统的,这说明可以轻松地 将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立 三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件 :


1.tb_demo.frm,存储表定义;
2.tb_demo.MYD,存储数据;
3.tb_demo.MYI,存储索引。
MyISAM表无法处理事务,这就意味着有事务处理需求的表 ,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用:
1.选择密集型的 表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
2.插入密集型的表。MyISAM 的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据 。
InnoDB
InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被 很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。我的电脑上安装的 MySQL 5.6.13版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下 ,使用InnoDB是最理想的选择:
1.更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新 请求。
2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
3.自动灾难恢复。与其它存 储引擎不同,InnoDB表能够自动从灾难中恢复。
4.外键约束。MySQL支持外键的存储引擎只有InnoDB 。
5.支持自动增加列AUTO_INCREMENT属性。
一般来说,如果需要事务支持,并且有较高的并 发读取频率,InnoDB是不错的选择。
MEMORY
使用MySQL Memory存储引 擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据 确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带 来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和 TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不 变的CHAR类型,所以可以使用。
一般在以下几种情况下使用Memory存储引擎:
1.目标数据 较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数 max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。
2.如 果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。
3.存储在Memory表中的 数据如果突然丢失,不会对应用服务产生实质的负面影响。
Memory同时支持散列索引和B树索引。 B树索引的优于散列索引的是,可以使用部分查询和通配查询,也可以使用<、>和>=等操作符方 便数据挖掘。散列索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了,因此散列索引值 适合使用在=和<>的操作符中,不适合在<或>操作符中,也同样不适合用在order by子句中 。
可以在表创建时利用USING子句指定要使用的版本。例如:

  • create table users
    (
        id smallint unsigned not null auto_increment,
        username varchar(15) not null,
        pwd varchar(15) not null,
        index using hash (username),
        primary key (id)
    )engine=memory;
上述代码创建了一个表,在username字段上使用了HASH散列 索引。下面的代码就创建一个表,使用BTREE索引。
  • create table users
    (
        id smallint unsigned not null auto_increment,
        username varchar(15) not null,
        pwd varchar(15) not null,
        index using btree (username),
        primary key (id)
    )engine=memory;


MERGE
MERGE存储引擎是一 组MyISAM表的组合,这些MyISAM表结构必须完全相同,尽管其使用不如其它引擎突出,但是在某些情况下 非常有用。说白了,Merge表就是几个相同MyISAM表的聚合器;Merge表中并没有数据,对Merge类型的表 可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行操作。Merge存储引擎的使用 场景。
对于服务器日志这种信息,一般常用的存储策略是将数据分成很多表,每个名称与特定的 时间端相关。例如:可以用12个相同的表来存储服务器日志数据,每个表用对应各个月份的名字来命名。 当有必要基于所有12个日志表的数据来生成报表,这意味着需要编写并更新多表查询,以反映这些表中的 信息。与其编写这些可能出现错误的查询,不如将这些表合并起来使用一条查询,之后再删除Merge表, 而不影响原来的数据,删除Merge表只是删除Merge表的定义,对内部的表没有任何影响。
ARCHIVE
Archive是归档的意思,在归档之后很多的高级功能就不再支 持了,仅仅支持最基本的插入和查询两种功能。在MySQL 5.5版以前,Archive是不支持索引,但是在 MySQL 5.5以后的版本中就开始支持索引了。Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被 请求时会实时压缩,所以它经常被用来当做仓库使用。
存储引擎的一些问题
1.如何查看服务器有哪些存储引擎可以使用?
为确定你的MySQL服务器可以用哪些 存储引擎,执行如下命令:

  • show engines;
这个命令就能搞定了。


2.如何选择合适的存储引擎?
(1)选择标准可以分为:
(2)是否 需要支持事务;
(3)是否需要使用热备;
(4)崩溃恢复:能否接受崩溃;
(5)是否需 要外键支持;
然后按照标准,选择对应的存储引擎即可。
总结
这篇文章总结了几种比较常用的存储引擎,对于实际的工作,需要根据具体的情况而定 ,结合实际的项目实例进行应用,才是最好的学习方法。




法律声明:
1. 本站所有资源和素材来源于网络收集,如有侵权内容请联系站长删除处理!
2. 本站大部分下载资源收集于网络,版权归原作者所有,如有侵权请联系删除。
3. 本站提供的素材、源码、等等其他资源,都不包含技术服务支持!
4. 若因线路和服务器问题非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5. 注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
收藏收藏 分享分享 分享淘帖 支持支持 反对反对
沙发
发表于 2018-6-2 14:29:16 | 只看该作者
不错,顶一个!
懒得打字嘛,点击右侧快捷回复 【乱回复纯数字纯字母将禁言】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

必备工具

地图查看分析转换三合一

目前地图转换 单纯的OB真彩地图转换编...号想必很多人都会, 也有很多工具

南宫地图编辑器v5.0

使用方法,放置传奇客户端DATA文件夹...

Tiles转换工具,支持支持255

支持255地图转换工具!

关于本站

玩传奇论坛 - 专业提供游戏素材、游戏工具、传奇单机、传奇服务端,致力于打造最精品的版本素材分享平台!

Archiver|小黑屋|玩传奇吉ICP备18002996号-1) |网站地图 

GMT+8, 2024-11-16 06:58 , Processed in 0.035604 second(s), 35 queries , Gzip On. 

 Powered by Discuz! X3.2

 © 2001-2013 Comsenz Inc.

返回顶部