• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
CaoJianbang
邦哥
博客园    首页    新随笔    联系   管理    订阅  订阅

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)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。

 

posted @ 2023-03-24 15:24  CaoJianbang  阅读(33)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3