`
shidan66
  • 浏览: 65409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL中MyISAM和InnoDB的主要区别

 
阅读更多

MySQL最常用的两种引擎MyISAM和InnoDB:

①MyISAM不支持事务、外键等高级数据库功能

②MyISAM引擎对应的数据库文件结构为:一个表对应三个文件,分别为 tablename.frm(共有的),tablename.myd,tablename.myi,这三个文件分别存储的是表结构,表数据,索引

    InnoDB引擎默认会将所有表的数据和索引都存在data目录下的ibdata1文件中,如果开启独立表空间,则会每个表创建一个对应的.ibd文件,来存储数据和索引,其他的信息则还是放到ibdata1文件中。

③MyISAM引擎使用表锁,InnoDB提供行锁,且提供不加锁读取。但是InnoDB在执行不能确定扫描范围的SQL时会锁定全表

④MyISAM存储表中的行数,在使用count(*)统计全表记录数时会很快,InnoDB则需要全表扫描。但是在含有where语句的时使用count,两者的效率是一样的,因为都需要扫描全表

⑤InnoDB中自增长列必须是索引的,并且必须是第一索引列

 

        InnoDB使用一种锁机制来保证数据表自增长列的一致性,针对这个表innodb会维护一个计数器,每次有新数据插入的时候会锁定全表,计算最新的值,得到结果后,会立刻释放这个锁(注意这里不会等到事务结束才释放)。这个计数器会一直维护在内存中,知道服务重启后重新初始化。

        上面的方式在大量的并发插入时候,会导致阻塞,甚至会达到最大连接数而使服务器崩溃,所以在5.1.22版本中引入了一种新的保证自增长一致性的解决方案--innodb使用一个轻量级互斥量,在可以预算判断插入数量的语句中,就预先分配好子增量,比如auto_increment=1,使用insert into (a) values(a1),(a2),(a3)插入三条语句,然后又插入一条语句,这时候虽然前三条数据还没有插入完成,但是已经知道执行后面的这条语句时auto_increment值为4,不会阻塞该语句的执行。

        通过设置innodb_autoinc_lock_mode的值可以调整auto_increment的锁策略,该值为0时,全部使用表锁定;该值为1时,对于可判定插入行数的语句使用轻量级互斥量;该值为2时,所有的语句都使用轻量级互斥量(不是很安全)

 

分享到:
评论

相关推荐

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

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

    MyISAM和InnoDB的异同

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们各自拥有不同的特点和适用场景。 #### MyISAM引擎概述 MyISAM是MySQL早期默认使用的存储引擎,它主要适用于读取密集型的应用场景。MyISAM支持表级锁定,这意味...

    mysql DB引擎myisam与innodB

    在 MySQL 数据库系统中,存在多种不同的存储引擎,其中最为人所熟知且广泛使用的两种是 MyISAM 和 InnoDB。这两种存储引擎各自具有独特的特点和适用场景。 #### InnoDB:事务安全与外键支持 InnoDB 是 MySQL 中...

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

    在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数据库引擎(5.5版之前),由...

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

    MySQL存储引擎--MyISAM与InnoDB区别 MySQL是一种关系型数据库管理系统,它支持多种存储引擎,每种存储引擎都有其特点和优缺。MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们都有其优缺点,本文将对比MyISAM...

    myisam和innodb的区别

    ### MySQL存储引擎详解:MyISAM与InnoDB的主要区别 #### 一、概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了多种存储引擎供用户根据不同的应用场景选择。其中最常用的两种存储引擎分别是MyISAM和...

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

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

    myisam与innodb 区别 值得下载

    自己总结的 关于mysql存储引擎myisam innodb 的比较 两者区别 对面试会很有帮助

    68.选择合适的数据库引擎和myisam和innodb的主要区别?.avi

    mysql数据库 选择合适的数据库引擎和myisam和innodb的主要区别

    MyISAM InnoDB 区别

     两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。  我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我...

    数据库引擎 MyISAM 和 InnoDB 对比

    在MySQL数据库系统中,MyISAM与InnoDB是最常被提及的两种存储引擎。这两种引擎在功能、性能以及适用场景上存在显著差异,本文将深入探讨这两者之间的区别,并分析它们各自的优势及应用场景。 #### 一、基本概念 - ...

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

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

    MyISAM与InnoDB的索引差异

    MySQL中的存储引擎MyISAM和InnoDB在处理索引上有显著的差异,这些差异主要体现在索引的组织方式以及对数据存储的影响上。两者都基于B+树这种高效的索引结构,但具体实现有所不同。 首先,MyISAM的索引采用非聚集...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎的主要特点 MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合...

    Mysql 的存储引擎,myisam和innodb的区别

    主要介绍了Mysql 的存储引擎,myisam和innodb的区别,需要的朋友可以参考下

    MyISAM和InnoDB索引引擎的B+树索引实现1

    本文主要讨论两种常见的存储引擎——MyISAM和InnoDB,它们在B+树索引实现上的差异。 首先,MyISAM是MySQL早期的默认存储引擎,它在索引方面采用B+树结构。对于主键索引,MyISAM的B+树叶节点存储的是数据记录的物理...

Global site tag (gtag.js) - Google Analytics