page contents

mysql引擎innodb与myisam的区别

Innodb:支持事务的安全性,支持外键、行锁、事务是他最大的特点。如果有大量的update和insert,建议使用innodb,特别是针对多个并发和QPS较高的情况。

attachments-2021-03-wtkx8sTL603c8d893aeca.png

Innodb:支持事务的安全性,支持外键、行锁、事务是他最大的特点。如果有大量的update和insert,建议使用innodb,特别是针对多个并发和QPS较高的情况。

Myisam: 默认表类型,是存储记录和文件的标准方法。不是事务安全的、不支持外键,如果执行大量的select,insert Myisam比较合适。


一、myisam引擎

  1. mysql默认引擎,不支持事务。

2. 表级锁定,更新时,锁定机制是整张表被锁定,其它连接无法更新表的数据,效率比较低下,锁机制成本低,但是打打降低了并发性能

3. 读写互相阻塞,读的时候阻塞写,写的时候阻塞读,但是读与读之间不阻塞

4. 只对索引进行缓存,虽然key_buffer可以大幅提高性能,减少磁盘IO,但对数据不缓存

5. 适合读业务比较多的生产环境,比如BOLG,读的速度比较快

6. 占用资源较小,服务器硬件不好时,可以考虑使用

7. 数据恢复没有innodb引擎恢复得完美

8. 支持全文索引,不支持外键约束


二、Myisam引擎应用场景

1. 不需要事务的支持场景,读数据多的网站

2. 并发相对低的业务,因为表级锁定的机制限制

3. 数据修改相对少的业务,阻塞问题

4. 对数据要求一致性不高的业务


三、myisam引擎优化

1. 尽量索引,缓存机制

2. 调整读写优先级

3. 启用延迟插入

4. 生产环境应用memcache缓存的多,mysql缓存为用少


四、innodb引擎

1. 支持事务,四个级别的事务

2. 锁定机制一般是行级锁定,更新时只锁定当前行,其他的行,不影响,还可以继续读写,全表扫描,还是表锁。

3. 读写阻塞与事务隔离相关,读取速度一般

4. 可以缓存速度和索引,高效的缓存特性

5. 支持分区,表空间

6. 适合读写业务较多的环境,比如BBC等,一般的生产环境,也推荐用innodb,效率高

7. 服务器资源开销大

8. 支持外键索引,不支持全文索引


五、innodb的应用场景

1. 需要事务支持的业务

2. 适合高并发的业务,行级锁定,对高并发有很好的适应能力,但要确定查询是用索引完成的

3. 数据更新比较频繁的场景,比如BBC

4. 数据一致性要求较高

5. 硬件设备内存较大时,可以利用innodb加好的缓存能力来提高内存利用率,尽可能的减少磁盘IO

更多技术资讯,请继续关注六星教育社区-程序员编程技术分享交流学习高端论坛。

attachments-2021-03-zr9U5zOp603c8da1b9979.jpg

  • 发表于 2021-03-01 14:44
  • 阅读 ( 757 )
  • 分类:数据库

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章