mysql mysiam innodb的区别
1,存储文件
mysiam:数据恢复可以直接拷贝下面三个文件
.frm 文件保存表的结构
.MYD 数据
.myi 索引
innodb:数据恢复必须停掉mysql,然后在恢复
.frm 表结构
共享表空间进行数据与索引存储
表空间文件
- 共享表空间文件:ibdata1
- 私有表空间文件:表名.ibd
2,设计理念
mysiam:高性能读取
innodb:高并发读写
3,锁级别
mysiam:表锁,insert,update会锁表
innodb:行锁,不确定扫描范围锁表
4,事务与外键
mysiam:不支持
innodb:支持 transaction commit rollback
5,索引
mysiam:支持fulltext
innodb:不支持fulltext,缓存索引本身,同事缓存数据,内存消耗较大
其他:
1、InnoDB不支持FULLTEXT类型的索引,MySQL5.6之后已经支持(实验性)。 2、InnoDB中不保存表的 具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。 3、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 4、DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。 5、LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。 6、另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。
适用范围:
MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。 InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述