MySQL引擎的区别

你好,你的分析很全面,但是如果我面对面跟你说的话,我可能不会这么详细。
上周有客户问我InnoDB和MyISAM有什么区别。
我告诉他这些点:
对于事务,需要InnoDB。
它支持 ACID 并具有所有隔离级别。
您需要将它用于诸如不会出错的银行订单系统之类的事情。
不用担心MyISAM。
如果数据丢失,直接扔掉即可。
无论如何,只需重新启动日志系统即可。

至于锁定机制,行级 InnoDB 锁听起来不错,对吧?但如果你无法弄清楚范围,比如你更新一条没有索引的记录,直接锁定整个表,你就会陷入困境。
表级MyISAM锁虽然比较老式,但是它直接锁定表的读写。
它简单粗暴,很容易用于全文搜索。

在索引和性能方面,InnoDB没有全文索引是一个bug(虽然在5 .6 +版本中已经修复),但是当数据量很大时,依靠缓冲池就省事了。
MyISAM有全文索引,count()直接返回结果,结构简单,读取速度快,对于临时表有好处。
哪个外键? InnoDB有它,数据绑定无忧。
根本没有MyISAM。
如果需要关联的话,自己写代码即可。

崩溃恢复是最大的区别。
InnoDB有redolog来恢复,而MyISAM必须手动修复损坏的表。

我选场景的时候就直接告诉他,如果订单经济、写入高并发、数据不能乱的话,InnoDB是唯一的选择。
MyISAM适合读多写少的东西,比如网站配置、日志等。

注意:MySQL现在默认使用InnoDB,但是如果你的旧系统仍然使用MyISAM,那么在更改InnoDB时要小心。
备份和恢复是一件痛苦的事情。
对于性能测试你可以通过运行sysbench就知道,不要只听理论。

建议摘要?不管怎样,我告诉他,能用InnoDB就不要考虑MyISAM,除非你坚持使用全文索引。
不要指望 MyISAM 在设计上支持事务。
如果出了什么问题,你连哭的时间都没有。
最后,当涉及到数据库时,你真的必须自己动手,而不仅仅是阅读文档。

Mysql数据库3种存储引擎有什么区别?

InnoDB是商业数据库的首选引擎,支持ACID事务,从MySQL 5 .5 开始默认使用。
MyISAM登录速度快,但不支持事务和外键。
适用于大量阅读和大量写作的情况。
MEMORY将数据存储在内存中,查询速度快,但不安全。
适用于数据量较小的临时表。

选举锚点: InnoDB:银行系统,2 008 年引入ACD支持。
Maysam:2 01 0年电商网站流量高峰期写入数据量达到TB级。
内存:缓存表,2 02 0年数据大小小于1 GB。
实用提醒: 根据您的业务需求选择引擎,不要混合使用。

MySQL中重要的数据库存储引擎

哎呀,说到MySQL存储引擎,这真是一个大学问题,所以我得详细解释一下。

我们先来说说InnoDB。
这是 MySQL 的本机子项,默认情况下使用。
它最大的特点就是支持交易。
什么是交易?这意味着可以保证数据完整性,并且您所做的任何修改都可以恢复到原始状态。
这就是所谓的ACID,你明白吗?然后,它还可以执行行级锁定。
这意味着什么?它是逐条记录的锁定,不像MyISAM锁定整个表,因此在同时读写时不会卡住。
另外,还可以实现外键约束,使得数据库中的表关系更加清晰。
如果数据库崩溃了,InnoDB可以帮助你恢复。
这称为崩溃恢复能力。
这非常适合需要高数据一致性的在线交易系统和金融应用程序。

然后是MyISAM,它是MySQL早期的默认存储引擎。
它不支持事务,所以你想回滚吗?别再做梦了。
但它的优点是读写速度快以及表级锁定。
它适合读多写少的应用,例如数据仓库和日志记录,特别是全文索引,可以非常快速地处理。

我们来谈谈内存。
该产品将数据直接存储在内存中,读写速度非常快。
然而,一旦你的服务器重新启动,一切都会消失。
这些称为临时表、缓存等,适合不需要持久化的数据。

三种引擎各有其优点。
选择哪一个取决于你的应用场景,对吧?对于需要事务支持的,选择InnoDB;读多写少的,选择MyISAM;对于需要快速访问但又不怕数据丢失的用户,请选择MEMORY。
不幸的是,这必须根据具体情况来决定。

mysql常用存储引擎有哪些

InnoDB:支持事务、行级锁、外键,非常适合高度并行的OLTP,保证数据的可靠性。
MYSAM:快速,仅限表级锁,适用于读多写多的情况,但在应用层必须保证数据一致性。
内存:内存存储,快速且灵活,非常适合临时表和缓存数据。
归档:支持高压缩、仅插入和查询,非常适合归档。
CSV:文件格式存储,易于交换,但没有索引,性能较差。
Blackhole:不存储数据,只接受文本,适合测试和传输。

选择建议:默认为InnoDB,高存储选择InnoDB,静态数据选择MyISAM/Archive,性能测试关键。