本文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别:
构成上的区别
MyISAM
每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义。
数据文件的扩展名为.MYD (MYData)。
索引文件的扩展名是.MYI (MYIndex)。
InnoDB
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件。
.user.frm存储表结构。
user.ibd存储数据文件。
事务处理上方面
MyISAM
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持
InnoDB
InnoDB提供事务支持事务,外部键等高级数据库功能
SELECT UPDATE,INSERT,Delete操作
MyISAM
如果执行大量的SELECT,MyISAM是更好的选择
InnoDB
1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表
2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
3.LOAD TABLE FROM MASTER(将主服务器的数据拷贝到从服务器的一个途径是使)操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用
对AUTO_INCREMENT的操作
MyISAM
每表一个AUTO_INCREMEN列的内部处理。
MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。
AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置
对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
InnoDB
如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。
自动增长计数器仅被存储在主内存中,而不是存在磁盘上
参考:http://kb.cnblogs.com/page/82976/
表的具体行数
MyISAM
select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
InnoDB
InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
锁
MyISAM
表锁
InnoDB
提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in
SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
分享到:
相关推荐
8.MySQL存储引擎--MyISAM与InnoDB区别1
本文深入对比分析了MySQL的两大存储引擎InnoDB和MyISAM之间的区别,包括事务支持、数据恢复能力、并发控制、存储空间占用和读取性能等多个维度。通过详细的技术和场景分析, objectively评估两者的优缺点,并给出选择...
MyISAM引擎与InnoDB引擎性能的对比
mysql 5.6 新特性 innodb
yum install make gcc flex bison cd /root/undrop-for-innodb-master make 会产生三个文件c_parser innochecksum_changer stream_parser
MySQL InnoDB Java阅读器 innodb-java-reader是一个Java实现,用于直接访问MySQL InnoDB存储引擎文件。 使用库或命令行工具,它提供了只读功能,例如检查页面,通过主键,辅助键查找记录以及通过LSN或填充率生成页面...
mysql-shell-8.0.18-windows-x86-64bit.zip MySQL Shell is an advanced command-line client and code ... MySQL Shell includes the AdminAPI that enables you to work with InnoDB cluster, see InnoDB Cluster.
percona-data-recovery-tool-for-innodb-0.5.tar.tar
MySQL 核心引擎InnoDB-事务锁多版本分析,进阶资深DBA可以看看
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度...
《MYSQL备份与恢复》之 Innodb与 MyISAM引擎 一、系统环境 1.1 ubuntu 12.0.4 X86_64 1.2 percona-xtrabackup-2.0.3.tar.gz 1.3 xtrabackup简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时...
自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助
2020年1月13日,MySQL官方发布了今年的第一个8.0版本-8.0.19,自2018年4月19日发布第一个稳定版本8.0.11到如今已经历了近两年共9个小版本的迭代,产品稳定性持续增强。极具吸引力的是官方在8.0版本上对MGR bug 的...
MyISAM和InnoDB的异同 MyISAM和InnoDB的异同
该文档详细分析了innodb的加锁原理、死锁原因以及处理方式
mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...
MySQL技术内存-InnoDB存储引擎,
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 ----...# 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客
MyISAM和InnoDB都使用B+树来实现索引: • MyISAM的索引与数据分开存储 • MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别 • InnoDB的聚集索引和数据行统一存储 • InnoDB的聚集索引存储数据行本身,普通...
入门Mysql的好书 Part I - Introduction Chapter 1 - What Is MySQL? Chapter 2 - The Test Environment Chapter 3 - Introductory Example (An Opinion Poll) Part II - Fundamentals Chapter 4 - User ...