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文档中的大批量数据进行数据提炼,更改等等。
mysql数据库引擎——MyISAM,InnoDB的更多相关文章
- 常用mysql数据库引擎——MyISAM和InnoDB区别
背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据 ...
- mysql 存储引擎 myisam innodb 区别
虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引 ...
- MySQL数据库引擎MyISAM和InnoDB的区别介绍
MySQL数据库有多种存储引擎:比如:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BL ...
- mysql数据库引擎MyISAM与InnoDB的区别浅说
mysql的存储引擎包括:MyISAM.InnoDB.BDB.MEMORY.MERGE.EXAMPLE.NDBCluster.ARCHIVE.CSV.BLACKHOLE.FEDERATED等,其中In ...
- MySQL数据库引擎MyISAM与InnoDB的区别
1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件 ...
- mysql数据库引擎(InnoDB MyISAM)
MySQL的默认存储引擎’在5.5版本以前是MYISAM,5.5之后是INNODB. 两种存储引擎的索引结构都是B+树,B+树的详细介绍可参考https://www.cnblogs.com/yange ...
- mysql数据库引擎 MyISAM和 InnoDB区别
1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件 ...
- (转)MySQL数据库引擎ISAM MyISAM HEAP InnoDB的区别
转自:http://blog.csdn.net/nightelve/article/details/16895917 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- MySQL存储引擎 - Myisam和Innodb
Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...
随机推荐
- oracle索引查询
/*<br>* *查看目标表中已添加的索引 * */ --在数据库中查找表名 select * from user_tables where table_name like 'table ...
- 深入SpringBoot注解原理及使用
首先,先看SpringBoot的主配置类: @SpringBootApplication public class StartEurekaApplication { public static voi ...
- JEESZ-SSO解决方案
提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询. 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. S ...
- Centos7安装dig命令
作者: jwj 时间: 2018-10-17 分类: 服务器 最近做一个项目,需要用到Gmail邮箱发送邮件,但发现发送不出去.排查问题时,需要用到dig命令,但使用时,却提醒我dig命令不存在~那就 ...
- Redis安装及前后置启动
Redis简单介绍及在Linux上安装(这里测试用是版本:redis-3.0.0.tar.gz) 一:什么是Redis? redis就是C语言编写的一个高性能的键值存储(key-value)的非关系型 ...
- 利用Pycharm部署同步更新Django项目文件
利用Pycharm部署同步更新Django项目文件 这里使用同步更新的前提是你已经在服务器上上传了你的Django项目文件. 在"工具(Tools)"菜单中找到"部署(D ...
- Linux学习笔记(四)Linux常用命令:帮助命令
一.帮助命令man [man] [命令] 例如: man ls man的级别 man -f [命令] 相当于 whereis [命令] 可查看该命令有几个等级,进而可以通过 man [等级数] [ ...
- EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用
做作业工程中遇到一些问题,特此记录一下 解决的问题:使用EasyUI框架搭建简单学生管理系统(数据库增删改查)操作时配合JSP,不知道如何把从数据库获得的数据封装成JSON格式并传回前端JSP并进行展 ...
- 12_Hive实战案例_累计报表_级联求和
注:Hive面试题:累积报表 数据文件: 有如下访客访问次数统计表 t_access_times 需要输出报表:t_access_times_accumulate 实现步骤: 创建表,并将数据加载到表 ...
- Linux--查询文件的第几行到第几行命令
cat catalina.out | tail -n +14000 | head -n 10000 | sort | uniq -c linux 如何显示一个文件的某几行(中间几行)[一]从第3000 ...