`

mysql开发中如何选择合适存储引擎

阅读更多
mysql开发中如何选择合适存储引擎

MySQL有多种存储引擎:

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

◆ MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。

◆ MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。

注释:MEMORY存储引擎正式地被确定为HEAP引擎。

◆ InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。

◆ EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。

◆ NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。

◆ ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

◆ CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

◆ BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

◆ FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。

当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要创建什么类型的表:

CREATE TABLE t (i INT) ENGINE = INNODB;

CREATE TABLE t (i INT) TYPE = MEMORY;

虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。

如何选择最适合你的存储引擎呢?

下述存储引擎是最常用的:

◆ MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。

◆ InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。

◆ BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

◆ Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

◆ Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

◆ Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

◆ Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

◆ Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

◆ Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。


在选择存储引擎时,应根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择多种存储引擎进行组合。
下面是常用存储引擎的适用环境。
●MyISAM:默认的Mysql插件式存储引擎。如果应用是以读写和插入操作为主,只有很少更新和删除操作,并且对事务完整性,并发性要求不是很高,那么选择这个存储引擎非常适合的。MyISAM是在Web,数据仓储和其他应用环境下最经常使用的存储引擎之一
●InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新和删除操作,那么innoDB存储引擎应该是比较合适的选择。InnoDB存储引擎除了有效的降低由于删除和更新导致的锁定,还可以确保事务的完整提交(commit)和回滚(rollback),对于类似计费系统或者财务系统等对数据准确性要求高的系统,InnoDB是比较合适的选择。
分享到:
评论

相关推荐

    mysql插件式存储引擎体系结构

    MySQL的插件式存储引擎体系结构是一种灵活的设计模式,允许用户根据具体的应用场景选择最适合的存储引擎。这一架构的最大优势在于它允许应用程序和数据库管理员(DBA)不必关心底层的具体实现细节,从而简化了应用开发...

    MySQL技术内幕 InnoDB存储引擎.pptx

    《MySQL技术内幕:InnoDB存储引擎》是一本极具价值的MySQL技术读物,无论是对于数据库管理员还是对于应用程序开发人员来说,都是一本值得一读的经典之作。通过阅读这本书,读者不仅能够深入了解InnoDB的内部结构和...

    MySql的存储引擎.doc

    了解并选择合适的存储引擎对于优化MySQL数据库的性能至关重要。比如,如果应用程序需要事务处理和高并发,InnoDB可能是最佳选择;而对于读取频繁、写入较少的场景,可以选择Memory引擎以提高读取速度。选择正确的...

    MySQL数据库:存储引擎深入解析

    在实际项目开发中,选择合适的存储引擎对于提高数据库系统的性能和稳定性至关重要。例如,在需要事务处理和高并发写操作的场景下,InnoDB无疑是最佳选择。而对于只读或读多写少的应用,则可以选择 MyISAM 或 MEMORY ...

    mysql中的表引擎

    MySQL中的表引擎是数据库管理系统的重要组成部分,它们负责数据的存储、检索和管理。数据库引擎的定义可以理解为数据处理的核心服务,它解析SQL语句,执行数据操作,并控制访问权限,确保数据的安全和高效处理。在...

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

    在 MySQL 中,表类型(存储引擎)可以选择 InnoDB、MyISAM、MEMORY 等。不同的存储引擎有不同的特点和优点,需要根据实际情况选择合适的存储引擎。 数据架构设计 数据架构设计是数据库开发的重要步骤,需要考虑到...

    MySQL存储引擎及其面向的数据库应用[收集].pdf

    MySQL存储引擎是数据库管理系统的核心组成部分,它决定了数据的存储方式、事务处理机制、索引类型以及其他关键特性。...开发人员应根据实际需求,结合存储引擎的特点,合理选择和配置MySQL的存储引擎。

    MySQL开发和DBA必读书

    这本书全面涵盖了MySQL的性能提升策略,包括查询优化、存储引擎选择、索引设计、复制与高可用性、负载均衡和性能监控等。读者可以从中学习如何通过合理配置MySQL服务器、利用缓存机制、避免全表扫描和改进SQL语句等...

    MySql-5.0.22安装Mysql开发工具

    4. **存储引擎**:MySQL支持多种存储引擎,如InnoDB(事务处理,支持外键),MyISAM(快速读取,不支持事务),Memory(数据存储在内存中)等,选择合适的引擎能优化性能。 5. **SQL语法**:理解SQL的基本语法,如...

    Linux下MySQL开发

    在Linux环境下进行MySQL开发是一项重要的技能,特别是在大数据处理、企业级应用和服务中,MySQL作为流行的开源关系型数据库管理系统,其高效稳定性和丰富的功能使得它在IT行业中占据着举足轻重的地位。本篇将深入...

    MySQL开发手册

    4. **存储引擎**:介绍InnoDB和MyISAM两种主要存储引擎的特性,如事务处理、行级锁定、外键支持等,以及如何根据需求选择合适的存储引擎。 5. **触发器与存储过程**:讨论如何使用触发器来实现自动化的业务逻辑,...

    mysql索引、触发器、事务、存储过程说明

    ### MySQL中的索引 在MySQL数据库中,索引是一种用于提高数据检索速度的数据结构。它类似于书籍中的目录,可以帮助数据库快速...在实际开发中,根据具体需求选择合适的存储引擎和适当的数据库设计模式是至关重要的。

    玩转MySQL存储过程

    ### 玩转MySQL存储过程 #### 一、存储过程简介及优势 存储过程是一种预编译的SQL语句集合,存储在数据库中,通过指定名称及其参数来调用执行。...根据实际需求选择合适的数据库系统和存储过程实现方式至关重要。

    软件开发实战:PHP+MySQL开发实战

    4. **丰富的存储引擎**:MySQL 支持多种存储引擎,包括 InnoDB、MyISAM 等,可以根据不同的需求选择合适的存储引擎。 5. **开源免费**:MySQL 是一款开源软件,用户可以自由地使用、修改和分发 MySQL 的源代码。 ##...

    mysql开发设计规范

    MySQL开发设计规范旨在提高数据库的性能、稳定性和可维护性。以下是一些关键点的详细说明: 1. **数据库和表的数量控制**:为了管理方便和性能考虑,建议数据库数量不超过50个,表数量不超过500个,包括分区表。这...

    MYSQL开发规范.pdf

    在当前提供的文件内容中,包含了大量与MySQL数据库开发相关的知识点,具体涉及了数据库版本、存储引擎、字符集、数据类型、错误处理、SQL语法以及表结构设计等方面的内容。下面将对这些知识点进行详细的解读。 ### ...

    mysql-5.7操作手册(中文版).pdf

    MySQL 的主要特性包括支持 SQL 语句、支持多种存储引擎、支持事务处理、支持多种数据库操作等。 MySQL 5.7 中的新内容 MySQL 5.7 中添加了一些新特性,包括增强的性能、改进的安全性、增强的数据类型等。 MySQL ...

    PHP 和 MySQL Web 开发书籍推荐

    - 这本书是PHP与MySQL领域内的经典之作,深入浅出地讲解了两者的结合使用,涵盖了从基础到高级的应用,包括最新的PHP 5.3特性和MySQL的存储过程、存储引擎等。对于希望全面掌握PHP与MySQL开发技巧的读者来说,这是...

    mySql引擎相关知识

    选择合适的存储引擎对于MySQL数据库系统的性能和稳定性至关重要。ISAM是最基础的存储引擎,但由于缺乏事务处理和支持的功能有限,现在已经很少使用。MyISAM因其简单高效的特点,在大量读取操作的应用场景下表现出色...

Global site tag (gtag.js) - Google Analytics