mysql数据库引擎——MyISAM,InnoDB

作为一个java web开发人员,对于mysql数据库掌握到具体比较这两类引擎的差异也蛮拼的,下面就介绍一下我在工作中积累的对这两类引擎的理解。

MyISAM:

    如果不更改mysql配置文件(my.ini)的话,MyISAM是MySQL的默认存储引擎, 每张MyISAM表对应三个本地存储文件:frm 文件存放表格定义;数据文件 MYD (MYData);索引文件 MYI (MYIndex)。

  MyISAM类型的表更多强调的是性能,它比InnoDB速度快,但不支持事务,也不支持热备份,但我们可以通过直接拷贝它的三个文件(frm,MYD,MYI)到其他库就能实现备件,十分方便。

InnoDB:

    InnoDB是事务型引擎,支持回滚、崩溃恢复能力、多版本并发控制、ACID事务。InnoDB对应的本地存储文件:frm、ibd(索引与数据),在MySQL的Data目录下有一个 ibdata1 文件,其中记录了本地

   MySQL服务器各个库中所有InnoDB表的被操作记录,比较大,没有这个文件InnoDB表无法正常被查看,而InnoDB表的备件基本上只能用热备份,除非拷贝整个Data目录,否则还原起来都十分困难,MySQL

  新版本也在不断地完善热备功能,不过其高效的、支持动态热备的软件都要付费。 我认为对于那些经常要执行update、insert操作,同时数据量比较大、结构比较复杂、操作需谨慎的表还是选择InnoDB。

  

  一般情况下,我都是用的MyISAM引擎,除非一些我觉得有必要在修理过程中用到rollback的表我才会用到InnoDB,不过对于一项目中的一些关于用户信息、产品信息的表还是要用InnoDB,毕竟项目在维护的

时候各个数据表都涉及一个增量备份的问题。另外,最近发现新版的MySQL在对字符数较多的字段建索引的时候,InnoDB支持的更好,之前是对单一字段索引的长度最大为 767 字节(数据实际所占长),使用 UTF-8

字符集,每一个字符使用 3 字节来存储,在 TEXT 或者 VARCHAR 类型的字段上建立一个超过 255 字符数的前缀索引时就会遇到问题; 而MyISAM索引键最大长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和。

  再就是,在具体给字段定长度、定类型的时候,还是应该去了解一下各种编码格式对中英文字符存储各自需要花费的空间。

  很多人说做后台的到最后比的都是sql功底,想想确实也是,业务代码逻辑不会太复杂,实际开发中大部分代码都是在调用各种接口,然后稍微复杂一点的就是工程的各种配置、发布,后期的话还有对系统的各种

性能测试。web应用,核心在于数据,写好sql语句,做好优化是相当重要的。数据库也能为自己解决很多生活中的小问题,比如对excel文档中的大批量数据进行数据提炼,更改等等。

时间: 2024-10-25 20:51:52

mysql数据库引擎——MyISAM,InnoDB的相关文章

常用mysql数据库引擎——MyISAM和InnoDB区别

背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据库引擎 适用范围 性能 事务 外键 数据受损恢复 MyISAM 适合频繁查询 高 × × × InnoDB 适合频繁修改 中 √ √ √ 注:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎 参考资料: MySQL数据库引擎介绍.区别.创建和性能测试的深入分析 http://www.jb

mysql数据库引擎myisam和innodb的比较

存储引擎 myisam  innodb,最常用可以配置default-storage-engine=INNODB 配置默认引擎 myisam的这3个在一起  结构,数据,索引(一个表由这3个组成) Engine myisamEngine innodb区别:1.保存文件的方式不同myisam: xxx.frm  结构        xxx.myd  数据    xxx.myi  索引innodb:一个表一个文件        xxx.frm   结构    所以的innodb表,都使用相同的inn

mysql 存储引擎 myisam innodb 区别

虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看两种存储引擎的区别. MySQL存储引擎MyISAM与InnoDB的区别 一.InnoDB支持事务,MyISAM不支持,这一点是非常之重要.事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了. 二.MyISAM适合查询以及插入为主的

MySQL数据库引擎MyISAM与InnoDB的区别

1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIndex).InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB. 2. 存储空间 MyISAM:可被压缩,存储空间较小.支持三种不同的存储格式:静态表(默认,但是注意数据

mysql数据库引擎 MyISAM和 InnoDB区别

1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIndex). InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB. 2. 存储空间 MyISAM:可被压缩,存储空间较小.支持三种不同的存储格式:静态表(默认,但是注意数

关于mysql数据库引擎MyIsam的表锁理解

MySQL中的锁概念 MySQL中不同的存储引擎支持不同的锁机制.比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁,默认情况下采用行级锁. Mysql3中锁特性如下: 表级锁:开销小,加锁块:不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发性也最高. 页面锁:开销和加锁界于表锁和行锁之间,会出现死锁:锁定粒度界与表锁和行锁

如何修改MySQL数据库引擎

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用MyISAM. INNODB的实用性,安全性,稳定性更高但是效率比MyISAM稍差,但是有的功能是MyISAM没有的.修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高.本文主要介绍如何修改MySQL数据库引擎为INNODB,接下来我们开始介绍. 首先修改my.ini,在[mysqld]下加上: default-storage-engine=INNODB 其中的蓝色字体是

数据库引擎介绍innodb和myisam

数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型INNODB和BERKLEY(BDB),也常常可以使用.如果技术高超,还可以使用MySQL+API自己做一个引擎.下面介绍几种数据库引擎:  ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取

MySQL存储引擎 - Myisam和Innodb

Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 展名为.MYD (MYData).索引文件的扩 展名是.MYI (MYIndex). 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB 事务处理上方面: MyISA