`
terry0501
  • 浏览: 316499 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mysql 引擎选择 InnoDB支持事务,MyISAM不支持

 
阅读更多
作者:Oscarwin
链接:https://www.zhihu.com/question/20596402/answer/211492971
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;  2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;  3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;  5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;   如何选择:1. 是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;2. 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB。3. 系统奔溃后,MyISAM恢复起来更困难,能否接受; 4. MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。
分享到:
评论

相关推荐

    mysql更改引擎(InnoDB,MyISAM)的方法

    mysql默认的数据库引擎是MyISAM,不支持事务和外键,也可使用支持事务和外键的InnoDB。 查看当前数据库的所支持的数据库引擎以及默认数据库引擎 数据库支持的引擎和默认数据库引擎代码: 代码如下:show engines; ...

    MyISAM引擎与InnoDB引擎性能的对比

    MySQL数据库系统提供了多种存储引擎,其中最常用的两种是MyISAM和InnoDB。它们各自具有独特的特性和适用场景,理解二者的性能差异对于优化数据库设计至关重要。 MyISAM引擎是MySQL早期的默认存储引擎,以其高速度和...

    mysql架构与存储引擎(MySQL逻辑架构、InnoDB引擎、MyISAM引擎、存储引擎选择).docx

    - **基础描述**:MyISAM是MySQL早期版本的默认存储引擎,不支持事务处理和行级锁,但提供了全文索引支持。 - **特点描述**: - **锁表机制**:在读取数据时使用共享锁,在写入数据时使用排他锁。 - **全文索引**...

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    1. 事务安全:InnoDB 支持事务安全,而 MyISAM 不支持。 2. 外键支持:InnoDB 支持外键,而 MyISAM 不支持。 3. 锁定机制:InnoDB 使用行锁(locking on row level),而 MyISAM 使用表锁(table lock)。 4. 性能:...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    3. **外键约束**:InnoDB支持外键,这是其他一些存储引擎如MyISAM所不具备的。外键可以确保数据的参照完整性和数据库间的关系。 4. **MVCC(多版本并发控制)**:InnoDB使用MVCC来实现高并发读写,尤其是在可重复读...

    浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析

    然而,MyISAM不支持事务,这意味着一旦发生错误,数据一致性可能无法得到保障。此外,对于大数据量的表,MyISAM在恢复时间上较慢,因为它不支持事务日志,这在系统崩溃后可能导致长时间的数据恢复过程。 相反,...

    mysql DB引擎myisam与innodB

    MyISAM 引擎虽然不支持事务处理,但在某些特定场景下仍然有其独特的优势。例如,在只读操作为主的环境中,MyISAM 的性能通常优于 InnoDB。此外,由于 MyISAM 使用的是表级锁定策略,因此在进行大批量数据导入时,其...

    mySql 存储引擎 启用 Innodb

    其中,InnoDB作为MySQL中最常用的存储引擎之一,提供了众多高级特性,如事务支持、行级锁定以及外键约束等。本文将详细介绍如何在MySQL中启用InnoDB存储引擎,并对比分析InnoDB与其他存储引擎(如MyISAM)之间的主要...

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎 一、系统环境 1.1 ubuntu 12.0.4 X86_64 1.2 percona-xtrabackup-2.0.3.tar.gz 1.3 xtrabackup简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时...

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    首先,InnoDB存储引擎支持事务处理,这使得它适用于那些需要确保数据完整性的应用。它通过回滚日志(undo log)和重做日志(redo log)实现ACID(原子性、一致性、隔离性和持久性)特性,提供了一种强大的事务安全...

    8.MySQL存储引擎--MyISAM与InnoDB区别1

    InnoDB支持事务处理,而MyISAM不支持。事务处理可以确保数据的一致性和可靠性。在InnoDB中,事务处理可以自动提交或回滚,以确保数据的安全性。 计数查询 InnoDB和MyISAM在计数查询方面有所不同。在InnoDB中,使用...

    MyISAM引擎与InnoDB引擎性能的对比.doc

    MyISAM是非事务性表的默认存储引擎,它不支持事务处理,但提供了非常高的读取速度。该引擎的特点包括: 1. **高读取性能**:MyISAM通过预先读取索引块到缓存中来优化读取操作。 2. **全文索引支持**:这是MyISAM...

    MyISAM和InnoDB的异同

    - MyISAM不支持事务,而InnoDB则支持ACID事务。 - 如果应用程序需要事务支持来保证数据的一致性和可靠性,应选择InnoDB。 2. **并发处理**: - MyISAM使用表级锁定,可能导致较高的锁等待时间;InnoDB使用行级...

    Mysql存储引擎InnoDB和Myisam的六大区别

    MyISAM不支持事务处理,这意味着一旦发生错误,可能导致数据丢失。而InnoDB提供事务支持,能够保证ACID(原子性、一致性、隔离性、持久性)属性,适合需要事务安全的应用。 3. **SQL操作**: - 对于SELECT操作,...

    Innodb存储引擎浅析—事务系统

    - **使用场景**:当不需要事务支持时,如只涉及大量的SELECT和INSERT操作时,可以选择MyISAM。 - **重要的配置参数**:`key_buffer`用于缓存MyISAM索引块。 - **状态参数**: - `key_read_requests`:表示从缓存中...

    MySQL存储引擎中MyISAM和InnoDB区别详解

    MyISAM和InnoDB是MySQL中两种最常使用的存储引擎,它们各有特点,适用于不同的应用场景。 1. **事务处理**: - **InnoDB** 支持ACID(原子性、一致性、隔离性、持久性)事务,提供事务安全,适合需要事务处理的...

    MySQL核心Innodb存储引擎浅析—事务系统

    ### MySQL核心Innodb存储引擎浅析—事务系统 #### 存储引擎介绍 在MySQL中,存储引擎是处理表的存储方式的核心组件之一。不同的存储引擎提供了不同的特性,如事务支持、锁定粒度等。其中,MyISAM和InnoDB是最常用...

    桌面运维HELPDESK常用面试题

    InnoDB支持事务,MyISAM不支持; InnoDB数据存储在共享表空间,MyISAM数据存储在文件中; InnoDB支持行级锁,MyISAM只支持表锁; InnoDB支持崩溃后的恢复,MyISAM不支持; InnoDB支持外键,MyISAM不支持; InnoDB不...

Global site tag (gtag.js) - Google Analytics