即使无法掌握未来,也请不要忘了明天。 收藏本站
登陆 / 注册 搜索

阅读:5K   回复: 2

InnoDB 与 Myisam 的六大区别

[复制链接]
小执念 古黑浩劫论坛大牛 2020-5-15 15:06 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
区别MyISAMInnoDB
构成上的区别每个 MyISAM 在磁盘上存储成三个文件, 第一个文件的名字以表的名字开始.

.frm 文件存储表定义。

数据文件的扩展名为 .MYD (MYData)。‎👔🔭😋✌

索引文件的扩展名是 .MYI (MYIndex)。
基于磁盘的资源是 InnoDB 表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB
事务处理上方面MyISAM 类型的表强调的是性能,其执行数度比 InnoDB 类型更快,但是不提供事务支持InnoDB 提供事务支持事务,外部键(foreign key)等高级数据库功能
SELECT UPDATE INSERT Delete操作如果执行大量的 SELECT,MyISAM 是更好的选择1.如果你的数据执行大量的 INSERT 或 UPDATE,出于性能方面的考虑,应该使用 InnoDB 表

2.DELETE FROM table时,InnoDB 不会重新建立表,而是一行一行的删除。

👍🏠🦞♾🦖‎

3.LOAD TABLE FROM MASTER 操作对 InnoDB 是不起作用的,解决方法是首先把 InnoDB 表改成 MyISAM 表,导入数据后再改成 InnoDB 表,但是对于使用的额外的 InnoDB 特性(例如外键)的表不适用
对AUTO_INCREMENT的操作每表一个 AUTO_INCREMEN列的内部处理。

MyISAM 为 INSERT 和 UPDATE 操作自动更新这一列。

这使得 AUTO_INCREMENT  列更快(至少10%)。
🤝🚐🍪🈳🪶‍
在序列顶的值被删除之后就不能再利用(当 AUTO_INCREMENT 列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。

AUTO_INCREMENT 值可用 ALTERTABLE 或 myisamch 来重置
对于 AUTO_INCREMENT 类型的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中,可以和其他字段一起建立联合索引🧑‍🎤‏🎩💶😤👄
更好和更快的 auto_increment 处理
如果你为一个表指定 AUTO_INCREMENT 列,在数据词典里的 InnoDB 表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。

自动增长计数器仅被存储在主内存中,而不是存在磁盘上.

关于该计算器的算法实现,请搜索👨‍🚒‏🥾🖲🤪👄

AUTO_INCREMENT 列在 InnoDB 里如何工作
表的具体行数select count(*) from table, MyISAM 只要简单的读出保存好的行数,注意的是,当 count(*) 语句包含 where 条件时,两种表的操作是一样的InnoDB 中不保存表的具体行数,也就是说,执行 select count(*) from table时,InnoDB 要扫描一遍整个表来计算有多少行
表锁提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs),另外,InnoDB 表的行锁也不是绝对的,如果在执行一个 SQL 语句时 MySQL 不能确定要扫描的范围,InnoDB 表同样会锁全表, 例如 update table set num=1 where name like "%aaa%"

上一篇
下一篇
帖子热度 5041 ℃

屋顶,数星星 「出类拔萃」 2020-5-15 15:06 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

除了友谊的小船说翻就翻、爱情的巨轮说沉就沉;
还有青春的小鸟说飞就飞、可爱的宝宝说污就污;
挺直的爷们说弯就弯、好好的姑娘说胖就胖;
👍🚈🍚➡🐅‍刚饱的肚子说饿就饿、刚取的人民币说没就没;
刚补的膜说破就破 ....
小执念 古黑浩劫论坛大牛 2020-5-15 15:19 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
什么是事务?

事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。一般而言:一段程序中可能包含多个事务。(说白了就是几步的数据库操作而构成的逻辑执行单元)

🖕🛩🥛☪🐤‌事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。

(1)原子性:事务是应用中最小的执行单位,就如"原子是构成自然界各种元素的基本单位",具有不可再分的特征一样。事务是应用中不可再分的最小逻辑执行体。(最小了,不可再分了)

(2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。(说罢了就是白狗变成了黑狗,不能出现斑点狗!)👩‎🎩📐🤪✋

(3)隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间不能相互影响。(说白了,就是你做你的,我做我的!)

(4)持续性:持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库。(说白了就是一条道跑到黑)

🦷🏝🍼❌🐟‌原文:https://www.cnblogs.com/zhuifeng-mayi/p/9270321.html
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表