`

论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数据库英文文献.pdf

    MySQL数据库架构的理解需要结合其历史背景来讨论,因此这两方面将在同一章节中进行讨论。 MySQL数据库的历史可以追溯到1979年,当时Monty Widenius在一家小公司TcX工作,创建了一款报告工具,使用BASIC语言编写,...

    mysql数据库和Navicat for MySQL

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统(RDBMS),由Oracle公司维护。它以其高效、稳定和易于扩展的特性,在互联网行业中占据了重要的地位。MySQL支持多种操作系统,包括Windows、Linux、Mac OS等,...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    AUTO_INCREMENT 是 MySQL 中的一种数据类型,它可以自动为列赋予唯一的整数值,每次插入新记录时,值都会自动增加。 BIGINT BIGINT 是 MySQL 中的一种整数类型,用于存储大整数值,其取值范围为-...

    MySQL数据库文件介绍及存放位置

    MySQL数据库文件主要包括两类:由MySQL自身创建管理的文件和由不同存储引擎创建的文件。 ##### 1. MySQL创建并管理的数据库文件 - **.frm文件**:存储了数据表的框架结构,如字段定义、索引信息等。每个数据表都有...

    access数据库与mysql数据库转换

    本文将深入探讨如何将Access数据库转换为MySQL数据库,以及这个过程涉及的关键知识点。 Access是由Microsoft开发的关系型数据库管理系统,它以其用户友好的界面和易于上手的特性而广受欢迎,特别适合小型企业和个人...

    MySQL数据库30W测试数据.rar

    而 "test_db-master" 可能是一个包含数据库结构、表定义和初始数据的文件夹,或者是一个压缩的SQL文件,用于一次性导入到MySQL数据库中。 导入大量数据时,可以采用以下几种常见方法: 1. **使用SQL命令行工具**:...

    mysql数据库及客户端

    在本主题中,我们将深入探讨“mysql数据库及客户端”的安装和使用,主要涉及两个文件:“mysql-gui-tools-5.0-r17-win32”和“mysql-5.5.28-win32.msi”。 1. **MySQL-GUI-Tools-5.0-r17-win32**: 这是一个MySQL...

    Mysql数据库备份

    根据备份过程中是否允许对数据库进行读写操作,MySQL备份可以分为热备份(在线备份)和冷备份(离线备份)两种模式。 - **热备份**:可以在不停止数据库服务的情况下进行,适用于生产环境中的备份需求。 - **冷备份...

    mysql数据库和图形化工具

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、稳定和易于管理的特性深受开发者喜爱。MySQL 5.5版本是其发展中的一个重要里程碑,它引入了许多增强性能和功能的改进,比如支持更大的InnoDB表空间...

    MySQL 数据库架构全掌握

    MySQL数据库架构主要包括以下几个核心组件: 1. **客户端/服务器架构**: - **客户端**:通过多种编程语言接口连接MySQL服务器。 - **服务器**:处理客户端请求、执行查询、返回结果并管理数据存储。 2. **SQL层...

    MySQL数据库知识

    以上内容概括了MySQL数据库的基础知识,涵盖了数据库的基本概念、MySQL的特点、安装与基本操作以及数据表的操作等方面。这些知识点对于初学者来说至关重要,是学习和掌握MySQL数据库技术的基础。

    MySQL数据库存储引擎探析.pdf

    本文主要探讨了MySQL中的两种主要存储引擎:MyISAM和InnoDB。 MyISAM是MySQL早期的ISAM存储引擎的增强版,曾经是MySQL的默认存储引擎。MyISAM提供了快速的数据存取和查询能力,特别适合于读多写少的场景。根据数据...

    MySql数据库

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统(RDBMS),由Oracle公司维护。它以其高效、稳定和易于管理的特点在Web应用、中小企业以及各种规模的项目中占据重要地位。MySQL支持多种操作系统,包括Windows...

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

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

    省市区街道4级MySQL数据.rar

    这样的结构设计有利于数据的管理和查询,同时提供了两种不同的使用方式供用户根据实际需求选择。.sql文件是MySQL的数据脚本文件,可以直接在MySQL环境中执行,以创建相应的数据库表并填充数据。 标签 "省市区街道四...

    mysql MySQL数据库开发优化与管理维护

    - **CHAR与VARCHAR**:比较两种字符串类型的区别及应用场景。 - **TEXT和BLOB**:介绍用于存储大量文本和二进制数据的类型。 - **浮点数与定点数**:解释这两种数值类型的区别及其使用场景。 ##### 第4章 字符集 ...

    JSP新闻发布系统MySql数据库

    4. **管理员角色区分**:系统中存在两种管理员类型——系统管理员和普通管理员。系统管理员通常具有更广泛的权限,如管理所有用户、设置系统参数等;而普通管理员可能只能管理特定的新闻内容或者部分用户。这种角色...

    mysql 汉字拼音数据库.zip

    在提供的压缩包"mysql 汉字拼音数据库.zip"中,可能包含两个SQL文件。第一个文件可能是一个精简版的数据库,只包含了常用汉字,适合那些只需要处理日常交流中常见词汇的场景。第二个文件则可能是一个更全面的汉字库...

Global site tag (gtag.js) - Google Analytics