MyISAM
在MySQL5.1以前,MyISAM存储引擎是MySQL是默认存储引擎,MyISAM支持表级锁定,并不支持事务,比较适合大量的select和insert操作。
InnoDB与MyISAM存储引擎之间的比较
下面我们以下几个方面来比较一下这两个存储引擎的不同。
事务的支持
InnoDB支持ACID的事务处理,MyISAM并不支持事务,这里需要注意,如果我们在程序需要进行事务处理,所有的数据都要使用Innodb存储引擎,如果中间有MyISAM存储引擎的数据表,如果进行事务回滚,MyISAM并不会回滚到之前的状态,因此MyISAM不支持事务。
索引与主键处理
InnoDB存储引擎使用的是聚集索引,InnoDB主键的叶子节点是该行的数据,而其他索引则指向主键,而MyISAM存储引擎使用的是非聚集索引,主键与其他索引的叶子节点都存储了指向数据的指针。
另外一个是MyISAM数据表允许没有主键和其他索引,而InnoDB数据表如果没有主键的话,而会生成一个用户不可见6字节的主键。
外键
MyISAM不支持外键,而Innodb则支持建立数据表之间的外键关联。
存储文件的不同
Innodb存储文件有frm、ibd,而MyISAM是frm、MYD、MYI,Innodb存储文件中frm是数据表结构定义文件,ibd是数据文件,MyISAM中frm是数据表结构定义文件,MYD是数据的文件,MYI则是存储索引的文件。
select count(*)
使用MyISAM存储引擎的数据表会记录一个数据表的总行数,所以对使用MyISAM存储引擎的数据表进行select count(*),可以很快得到一个数据表的总行数,而对于InnoDB存储引擎的数据表,想要查询总行数需要进行全表扫描才能得到。
锁的级别
InnoDB支持行级锁,而MyISAM只支持表级锁,因此InnoDB更能支持高并发。
设置默认存储引擎
上面我们说过,InnoDB是MySQL的默认存储引擎,当然我们也可以设置其他存储引擎为默认存储引擎,有两种方式进行设置,如:
服务器启动时设置
在服务器启动时,使用–default-storage-engine命令可以设置默认存储引擎:
mysqld --default-storage-engine=MyISAM
上面指定的是正常数据表的存储引擎,临时表的默认存储也可以使用–default-tmp-storage-engine参数来设置:
mysqld --default-tmp-storage-engine=MyISAM
通过set命令设置
除了在启动MySQL服务器时设置外,在进行登录到服务器中后,也可通过SET命令来设置默认存储引擎:
指定普通数据表的默认存储引擎:
SET default_storage_engine=MyISAM;
指定临时数据表默认存储引擎:
SET default_tmp_storage_engine=MyISAM
为数据表设置存储引擎
为数据表指定存储引擎有两种情况,一种是在使用CREATE TABLE语句创建数据表的时,另外一种则是对于已经创建好的数据表。
建表时
当我们在创建数据表的时候,如果没有指定存储引擎,则会使用上面设置的默认存储引擎,比如我们下面的建表语句:
CREATE TABLE users(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
gender TINYINT NOT NULL,
email VARCARH(50) NOT NULL,
PRIMARY KEY(id)
);
如果我们在创建数据表时,不想用默认的存储引擎,则可以在CREATE TABLE语句后指定ENGINE参数来设置存储引擎,如:
CREATE TABLE users(
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

Java高频面试专题合集解析:
当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!
更多Java架构进阶资料展示
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
4)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!