MySQL InnerDB 和 MyISAM 引擎

伟洪winni 2018-10-15 03:33:06
1. InnerDB 和 MyISAM 引擎分别在什么时候用?
2. MyISAM只支持表锁, 不支持行锁, 那还支持并发处理吗?
...全文
332 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2018-10-24
  • 打赏
  • 举报
回复
现在默认引擎都选择INNODB
  • 打赏
  • 举报
回复
模式没有什么特殊需要都是innodb
ACMAIN_CHM 2018-10-15
  • 打赏
  • 举报
回复
引用 楼主 qq_20203755 的回复:
2. MyISAM只支持表锁, 不支持行锁, 那还支持并发处理吗?
这个要看并发的粒度大小,INNODB行锁住某几行时,其他操作也只能等待。
田小瘦 2018-10-15
  • 打赏
  • 举报
回复
日常使用当中选择这2个的多数区别应该就是 InnerDB 支持事物,MyISAM 不支持,所以效率更快
ACMAIN_CHM 2018-10-15
  • 打赏
  • 举报
回复
引用
14.4. 选择存储引擎 与MySQL一起提供的各种存储引擎在设计时考虑了不同的使用情况。为了更有效地使用插件式存储体系结构,最好了解各种存储引擎的优点和缺点。 在下面的表格中,概要介绍了与MySQL一起提供的存储引擎: 图14.2:存储引擎比较 Storage engine comparison 下述存储引擎是最常用的: · MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。 · InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。 · BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。 · Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。 · Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。 · Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。 · Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。 · Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。 · Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
引用
一个数据库可以包含不同类型的表。 事务安全表(TST) 比起非事务安全表 (NTST)有几大优势: · 更安全。即使MySQL崩溃或遇到硬件问题,要么自动恢复,要么从备份加事务日志恢复,你可以取回数据。 · 你可以合并许多语句,并用COMMIT语句同时接受它们全部(如果autocommit被禁止掉)。 · 你可以执行ROLLBACK来忽略你的改变(如果autocommit被禁止掉)。 · 如果更新失败,你的所有改变都变回原来。(用非事务安全表,所有发生的改变都是永久的)。 · 事务安全存储引擎可以给那些当前用读得到许多更新的表提供更好的部署。 虽然MySQL支持数个事务安全存储引擎,为获得最好结果,你不应该在一个事务那混合不同表类型。如果你混合表类型会发生问题,更多信息请参阅13.4.1节,“START TRANSACTION, COMMIT和ROLLBACK Syntax”。 如果你没有指定配置值的话,InnoDB使用默认的配置值。请参阅15.2.3节,“InnoDB配置”。 非事务安全表自身有几个优点,因为没有事务开支,所有优点都能出现: · 更快 · 需要更少的磁盘空间 · 执行更新需要更少的内存 你可以在同一个语句中合并事务安全和非事务安全表来获得两者最好的情况。尽管如此,在autocommit被禁止掉的事务里,变换到非事务安全表依旧即时提交,并且不会被回滚。
.

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧