`

论MySQL数据库中两种数据引擎的差别

阅读更多
论MySQL数据库中两种数据引擎的差别


InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,请注意任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。

基本的差别为:

MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:

二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。
以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

原来链接:http://www.cnblogs.com/yan5lang/archive/2011/05/06/2039499.html
分享到:
评论

相关推荐

    数据库-Mysql剑谱之数据库引擎.docx

    数据库-Mysql剑谱之数据库引擎全文共2页,当前为第1页。数据库-Mysql剑谱之数据库引擎全文共2页,当前为第1页。Mysql剑谱之数据库引擎 数据库-... 常见的数据库引擎 比较常见的数据库引擎对象主要有两种,一种是常见

    通过数据库引擎来加速MySQL数据库

    另外两种类型InnoDB和Berkley(BDB),也常常可以使用。可以肯定的是,MyISAM的确快,但是如果你的逻辑设计需要事务处理,你就可以自 由使用支持事务处理的引擎。进一步讲,由于MySQL能够允许你在表格这一层应用...

    MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。...

    mysql数据库my.cnf配置文件

    # MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64 # 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件...

    MySQL数据库char与varchar的区别分析及使用建议

    在数据库中,字符 型的数据是最多的,可以占到整个数据库的80%...这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是 从数据的保存方式来看,两者相差很大。而且其具体的实现方式,还依赖与存储引擎。我这

    深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键...

    mysql数据库中的索引

     1.2 每种存储引擎对每个表至少支持16个索引,总索引长度至少为256字节;  1.3 MyISAM和InnoDB默认都是BTREE索引;  1.4 MySQL不支持函数索引,支持前缀索引【对索引字段的钱N个字符创建索引(MyISAM N=1000B...

    Mysql数据库锁定机制详细介绍

    本章将对MySQL中两种使用最为频繁的存储引擎MyISAM和Innodb各自的锁定机制进行较为详细的分析。 MySQL锁定机制简介 数据库锁定机制简单来说就是数据库为了保证数据的一致性而使各种共享资源在被并发访问访问变得有序...

    MySQL数据库远程访问权限如何打开(两种方法)

    在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库。缺省状态下,mysql的用户没有远程访问的权限。 下面介绍两种方法,解决这一问题。 1、改表法 可能是你的帐号不允许...

    深入理解MySQL的数据库引擎的类型

    另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。 ISAMISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快...

    校园招聘计算机岗位MySQL面试题

    MyISAM和InnoDB是两种MySQL的常见存储引擎。两个引擎的主要区别如下: MyISAM:不支持事务和行级锁定,支持全文索引和压缩表格,适合于大量查询、少量更新的读多写少应用场景。 InnoDB:支持事务和行级锁定,支持...

    MYSQL 高级篇之数据库搜索引擎及原理

    InnoDB 存储表和索引有以下两种方式 : ①. 使用共享表空间存储, 这种方式创建的表的表结构保存在.frm文件中, 数据和索引保存在 innodb_data_home_dir 和 innodb_data_file_path定义的表空间中,可以是多个文件...

    Mysql面试问题加答案50道题.docx

    1. 简述MySQL中的InnoDB和MyISAM存储引擎的区别? InnoDB支持事务,MyISAM不支持。InnoDB支持外键,MyISAM不支持。InnoDB支持行级锁,而MyISAM只支持表级锁。 2. 什么是数据库索引?MySQL中有哪些索引类型? ...

    mysql引擎及索引讲解

    数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建...常用的两种引擎是MYISAM和INNODB。

    MySQL的数据库引擎的类型

    另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。  ISAM  ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读 取操作的...

    MYSQL培训经典教程(共两部分) 1/2

    数据库的备份与恢复 114 5.1 数据库目录 115 5.1.1 数据目录的位置 115 5.1.2 数据库的表示法 116 5.1.3 数据库表的表示法 117 5.1.4 MySQL的状态文件 118 5.1.5 总结 120 5.2 重定位数据库...

    MySQL数据库InnoDB存储引擎中的锁机制

    当并发事务同时访问一个资源的时候,有可能导致数据不一致。...因此为了提高并发性,通常定义两种锁:A.共享锁(SharedLock)也叫读锁.共享锁表示对数据进行读操作。因此多个事务可以同时为一个对象加共享锁。B

    PHP与MySQL程序设计(带完整书签)

    《php与mysql程序设计(第4版)》是全面讲述php 与mysql 的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。《php与mysql程序设计(第4版)》涵盖了两...

    基于MySQL的存储引擎与日志说明(全面讲解)

    1.1.2 mysql数据库存储 MySQL引擎: 可以理解为,MySQL的“文件系统”,只不过功能更加强大。 MySQL引擎功能: 除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。 1.1.3 ...

Global site tag (gtag.js) - Google Analytics