mysql数据库引擎——MyISAM,InnoDB

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

MyISAM:mysql

    若是不更改mysql配置文件(my.ini)的话,MyISAM是MySQL的默认存储引擎, 每张MyISAM表对应三个本地存储文件:frm 文件存放表格定义;数据文件 MYD (MYData);索引文件 MYI (MYIndex)。MyISAM类型的表更多强调的是性能,它比InnoDB速度快,但不支持事务,也不支持热备份,但咱们能够经过直接拷贝它的三个文件(frm,MYD,MYI)到其余库就能实现备件,十分方便。web

InnoDB:sql

    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文档中的大批量数据进行数据提炼,更改等等。性能

相关文章
相关标签/搜索