浅谈MySQL表类型
小小子的文章写的不错哦。
转载:http://www.xiaoxiaozi.com/2009/07/14/1171/
浅谈MySQL表类型
MySQL为我们提供了很多表类型供选择,有MyISAM、ISAM、HEAP、BerkeleyDB、InnoDB,MERGE表类型,萝卜白菜各有所爱是不假,可是真正选择何种表类型还是要看业务需要啊,每一种表类型都有其自己的属性和优点。下面我们来简单的讨论一下。
MyISAM表类型:
- MyISAM表(TYPE=MYISAM)是ISAM类型的一种延伸,具有很多优化和增强的特性。
- 是MySQL的默认表类型。
- MyISAM优化了压缩比例和速度,并且可以很方便的在不同的操作系统和平台之间进行移植。
- MyISAM支持大表文件(大于4G)
- 允许对BLOB和TEXT列进行索引
- 支持使用键前缀和使用完整的键搜索记录
- 表数据和表索引文件可以依存在不同的位置,甚至是不同的文件系统中。
- 即使是具有相当多的插入、更新和删除操作的表,智能防碎片逻辑也能保证其高性能的协作性。
ISAM表类型:
ISAM表(TYPE=ISAM)和MyISAM表相似,但是其没有MyISAM格式的很多增强性能,因而不能像MyISAM类型那样提供很好的优化和执行效率。因为ISAM索引不能被压缩,它比在MyISAM中的相同索引战胜较少的系统资源。ISAM索引需要较多的磁盘空间,这对于像本站的这种小型环境很是问题。呵呵。
和MyISAM一样,ISAM表可以是固定长度的,也可以是可变长度的,但是其格式的最大键长度比较小,ISAM格式处理的表不能大于4G,而且表不能在不同的平台间移植。另外,ISAM表容易分裂,这会降低查询速度,对数据/索引的压缩产生限制。
HELP表类型:
HEAP表(TYPE=HEAP)是内存中的表,它使用能够比较快速的散列索引(当运行INSERT查询时,独立评价指出HEAP表最少比MyISAM表快30%),因此,对于临时表可以优化。经和MyISAM或ISAM表的访问规则和使用方式一样。存储在里面的数据只在MySQL服务器的生命期内存在,如果MySQL服务器崩溃或者被关掉,都会使其中的数据消失不见。虽然HEAP表具有性能方面的好处,但是由于它的临时性和一些其他功能限制,在实际中不可能经常使用。
HEAP表的大小只受到系统上可用内存的限制,MySQL是很聪明的,其具有内建保护来阻止无意识地使用所有可用内存。所以我们不用担心内存会被HEAP表用尽。HEAP表不支持BLOB或TEXT列,不能超过max_heap_table_size变量指定的大小。
BerkeleyDB表类型:
BerkeleyDB表(TYPE=BDB)是为了满足MySQL开发者对事务安全表日益增长的需求而发展起来的。BerkeleyDB表具有很多有趣的鹅,包括提交和回滚操作、多用户并发访问、检查点、次要索引、通过日志恢复崩溃、连续地和键控地访问数据等,这便利复杂的、基于事务的SQL有了可行的选择。
不过BerkeleyDB表也有一些限制,让我们简单的了解一下:
- 它的移动比较困难(在创建时,表路径硬编码在表文件中)
- 不能压缩表索引,而且其表通常比MyISAM相应的表要大
- 有点鸡肋的感觉,因为现在InnoDB格式很大程度上可以取代BerkeleyDB格式
InnoDB表类型:
InnoDB表(TYPE=INNODB),是一个完全兼容ACID(事务的原子性、一致性、独立性及持久性)的、高效率的表完全支持MySQL的事务处理并且不会btwagkyaakftntce。精细的(行级和表级)锁提高了MySQL事务处理的带走度,同时其也支持无锁定读操作(以前只在Oracle中包含)和多版本的特性。
异步输入/输出和一系列的读缓冲将提高数据检索速度,同时可以进行文件的优化和内存的管理。需要的基础上支持自动在内存上创建散列索引来提高性能,使用缓冲来提高可靠性和数据库操作的速度。InnoDB表的恨不能可以和MyISAM相媲美,甚至已经超过了MyISAM。
在不同的操作系统和体系结构上是完全可移植的。由于一直处于一致的状态(MySQL通过在启动时检查错误并修复错误来使它们更加健壮)。对外键、提交、回滚和前滚的操作的支持,使其成为MySQL中最完善的表格式。
MERGE表类型:
- MERGE表(TYPE=MERGE)是通过把多个MyISAM表组合到一个单独的表来创建的一种虚拟表。
- 只有涉及到的表具有完全相同的表结构时才能对表进行组合。字段类型或者索引的任何不同都不能进行成功的结合。
- MERGE表使用组成表的索引,并且不能维持它本身的索引,在某种情况下可以提高速度。
- 允许SELECT,DELETE,UPDATE操作
- 在需要把不同表的数据放到一起提高连接的性能或者在一系列表中进行搜索时,这种表很实用。
- 处理大的MyISAM表时,我们可以通过压纹或者使用MySQL发布中包含的myisampack实用工具进行“打包”来减少这些表战胜的空间。myisampack创建比较小的只读表,而不会在使用智能压缩时导致任何大的性能开销。
浅谈MySQL表类型相关推荐
- mysql表的类型_浅谈MySQL表类型
MySQL为我们提供了很多表类型供选择,有MyISAM.ISAM.HEAP.BerkeleyDB.InnoDB,MERGE表类型,萝卜白菜各有所爱是不假,可是真正选择何种表类型还是要看业务需要啊,每一 ...
- 浅谈Mysql 表设计规范
本文首先探讨下数据库设计的三大范式,因为范式只是给出了数据库设计的原则,并没有告诉我们实际操作中应该怎样操作,应该注意什么,所以我们还会谈下实际工作中需要注意的具体操作问题. 三大范式 首先放出三大范 ...
- 支付宝的数据库是MySQL变种_浅谈MySql的储存引擎(表类型)
浅谈mysql的存储引擎(表类型) 什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库, ...
- 浅谈 MySQL 连表查询
浅谈 MySQL 连表查询 连表查询是一把双刃剑, 优点是适应范式, 减少数据冗余; 缺点是连表查询特别是多张表的连表会增加数据库的负担, 降低查询效率. 简介 连表查询就是 2 张表或者多张表的联合 ...
- mysql怎么在海量数据上ddl_浅谈MySQL Online DDL(中)
本文首发于个人微信公众号<andyqian>,期待你的关注! 前言 在上一篇文章中<浅谈MySQL Online DDL (上)>中,我们谈到了MySQL Online DDL ...
- php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
<Mysql学习浅谈mysql的索引设计原则以及常见索引的区别>要点: 本文介绍了Mysql学习浅谈mysql的索引设计原则以及常见索引的区别,希望对您有用.如果有疑问,可以联系我们. 索 ...
- mysql key_len_浅谈mysql explain中key_len的计算方法
mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计.本文将分析mysql explain中key_len的计算方法. 1.创建测试表及数据 CREATE ...
- 浅谈mysql的主键和索引
在上一篇文章<count(1).count(*).count(字段)哪个更靠谱>中,我们提到过主键是优化不了count的查询效率的,需要建索引才可以,那么,是不是意味着主键的效率还不如一般 ...
- 浅谈MySQL存储引擎-InnoDBMyISAM
浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...
最新文章
- android都图片mat_Android内存泄露整理
- 数学知识--Methods for Non-Linear Least Squares Problems(第二章)
- [PM Tools]软件项目进度跟踪表v4.0
- Boost:用成员函数测试bind <void>
- matlab设计译码器,基于MATLAB的循环码编译码器设计与仿真.doc
- 使用ip命令搭建基于隧道的虚拟专有网络
- 湖南城市学院计算机题库和答案,湖南城市学院 计算机选择题题库
- 楼市新政催生“金十月” 二手房改善需求变成交主力
- Linux注册服务(chkconfig)
- Talib技术因子详解(十)
- 阿里P9告诉你:P6-P10到底啥区别,别再傻傻分不清?怎样才能打怪晋级?
- PostgreSQL11 | pgadmin4基本使用
- 水下SLAM论文!!!
- 在Java中中文需要用双引号吗_Java语言支持Unicode,自然支持中文,所以Java中可以使用中文的双引号、单引号、分号代替英文的双引号、单引号、分号。...
- Doris集群环境搭建
- [BZOJ1123][POI2008]BLO(tarjan求点双+树形dp)
- 中兴通讯年报或亏损29亿 (zz)
- 如何把aac格式的音频转换成mp3格式的
- 蓝天学校计算机教学反思,小学美术让我的飞机上蓝天教学反思.docx
- 李飞飞团队新研究登Nature子刊!实现可信 AI,数据的设计、完善、评估是关键!...