前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于MySQL优化的两三事(二)-- INNODB存储引擎

关于MySQL优化的两三事(二)-- INNODB存储引擎

作者头像
用户2475223
修改2019-12-17 15:32:48
3360
修改2019-12-17 15:32:48
举报
文章被收录于专栏:codersamcodersamcodersam

上一篇关于MySQL优化的两三事(一)-- MYISAM存储引擎介绍了MYISAM存储引擎,本篇内容就为大家介绍MySQL的主打引擎INNODB。

## 存储方式
  1. INNODB同样将使用不同的文件存储表的结构(.frm)、数据和索引(.ibd)
  2. 数据记录的物理顺序按照主键进行升序排序
## 并发处理
  1. 锁定力度:同时支持表级和行级
  2. 多版本并发控制,MVCC,实现无阻塞读操作
## 优点
  1. 可以使用外键
  2. 事务处理
  3. 行级锁定
## 缺点
  1. InnoDB不支持FULLTEXT类型的索引。
  2. InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。
  3. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
  4. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
  5. InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
  6. 对不支持事务的表做start/commit操作没有任何效果,在执行commit前已经提交,可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全:alter table tablename type=innodb;

## 总结

  1. 一般在开发中可以通过业务来确定使用哪种引擎更适合我们的业务场景:
  2. 业务逻辑以大量的读和插入为主,少量的更新和删除. 建议使用MYISAM。
  3. 业务逻辑以大量的更新和删除为主,建议,使用INNODB。 此时需要增加写锁(独占锁, 阻塞其他的所有的操作)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年5月5日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ## 存储方式
  • ## 并发处理
  • ## 优点
  • ## 缺点
  • ## 总结
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档