MyISAM 和 InnoDB
1、MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
2、InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。
1、读多写少的项目,而MyISAM的读性能是比Innodb强不少的。
2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。
3、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是where对它主键是有效,非主键的都会锁全表的。
4、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。
最新文章
- MySQL插入语句解析
- Attribute和自定义Property
- 安装软件时出现error 1337 【添加权限】
- C++/C互相调用
- UISearchBar改变搜索框的高度
- Rhel6-keepalived+lvs配置文档
- 在一台电脑访问另一台电脑的mysql数据库
- 两阶段提交及JTA
- .NET中可空值类型实现原理
- 403 forbidden 错误解决方案
- 【Netty】(8)---理解ChannelPipeline
- MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用
- js函数前面的+,!
- js判断输入的input内容是否为数字
- ssh 多次登录禁用账号
- Maven项目打包成可执行Jar文件
- python3基础之文件对象操作
- PHP策略模式2
- openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块[ZT]
- Realtime Rendering 5
热门文章
- Python||NameError: name 'reload' is not defined
- Point Estimate|unbiased estimator|Confidence-Interval Estimate
- 探索真实事物的虚拟再现——微软亚洲研究院SIGGRAPH Asia 2014精彩入选论文赏析
- 从广义线性模型(GLM)理解逻辑回归
- 上传第三方jar包到nexus
- Tuning xgboost in R:Part 1
- python中字典dic详解-创建,遍历和排序
- Louis的「每周语文」
- Ftp Centos ·; GitBook
- 初识SpringAOP