`
h13327840728
  • 浏览: 18782 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Mysql引擎整理(转)

阅读更多
【整理】MySQL引擎


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

    ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。

    MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。

    HEAP:HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。

    InnoDB:InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL++ API。在使用MYSQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。尽管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。


    MySQL 官方对InnoDB是这样解释的:InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读,这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。

    InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

    InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。

    InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。

    InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。 Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的




    一般来说,MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。

    一般情况下,MySQL会默认提供多种存储引擎,可以通过下面的查看:

    (1)看你的MySQL现在已提供什么存储引擎: mysql> show engines;

    (2)看你的MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%';

    (3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;




    所有的性能测试在:Micrisoft window xp sp2 , Intel(R) Pentinum(R) M processor 1.6oGHz 1G 内存的电脑上测试。

    测试方法:连续提交10个query, 表记录总数:38万 , 时间单位 s

        引擎类型                    MyISAM                InnoDB              性能相差

        count                      0.0008357            3.0163                3609

        查询主键                   0.005708              0.1574                27.57

        查询非主键                  24.01                   80.37                 3.348

        更新主键                   0.008124             0.8183                 100.7

        更新非主键                0.004141             0.02625               6.338

        插入                         0.004188             0.3694                 88.21


    (1)加了索引以后,对于MyISAM查询可以加快:4 206.09733倍,对InnoDB查询加快510.72921倍,同时对MyISAM更新速度减慢为原来的1/2,InnoDB的更新速度减慢为原来的1/30。要看情况决定是否要加索引,比如不查询的log表,不要做任何的索引。

    (2)如果你的数据量是百万级别的,并且没有任何的事务处理,那么用MyISAM是性能最好的选择。

    (3)InnoDB表的大小更加的大,用MyISAM可省很多的硬盘空间。

        在我们测试的这个38w的表中,表占用空间的情况如下:
            引擎类型                    MyISAM               InnoDB
            数据                       53,924 KB           58,976 KB
            索引                       13,640 KB           21,072 KB
            占用总空间              67,564 KB           80,048 KB

        另外一个176W万记录的表, 表占用空间的情况如下:

            引擎类型                MyIsam               InnorDB
            数据                   56,166 KB           90,736 KB
            索引                   67,103 KB           88,848 KB
            占用总空间        123,269 KB         179,584 KB
分享到:
评论

相关推荐

    mysql基础知识和mysql优化整理

    7. 存储引擎:MySQL支持多种存储引擎,如InnoDB(支持事务处理,行级锁定)、MyISAM(读写速度快,不支持事务)等。 二、MySQL优化 1. 查询优化:避免全表扫描,合理使用索引,减少JOIN操作,优化SQL语句结构,...

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

    最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...

    mysql优化精华整理文档

    MySQL优化精华整理文档是针对数据库性能提升的一份详细指南,涵盖了多个关键方面,旨在帮助管理员和开发者提升数据库的运行效率。以下是对各个知识点的详细解释: 1. **我们可以且应该优化什么?** - 优化的目标...

    MySQL源码分析整理

    MySQL 源码分析整理 MySQL 源码分析是了解 MySQL 内部实现机制的一种方式,它可以帮助我们更好地理解和优化 MySQL 的性能。通过对 MySQL 源码的分析,我们可以了解 MySQL 的内部实现机制,从而实现更高级别的性能...

    Mysql源码整理)_news4ep_mysql源码_MYSQL_

    本资源包“Mysql源码整理_news4ep_mysql源码_MYSQL_”是数据库学习者在研究MySQL源码过程中的笔记和资料集合,旨在帮助用户更深入地了解MySQL的内部工作机制。 MySQL源码的学习可以从以下几个关键方面展开: 1. **...

    mysql优化笔记+资料

    这些笔记涵盖了MySQL优化的主要方面,包括查询优化、SQL编写技巧、数据库设计、存储引擎选择、服务器配置、硬件升级、定期维护以及使用各种工具进行监控和调优。通过这些方法,你可以有效地提升MySQL数据库的运行...

    MYSQL读书笔记整理

    以下是对MySQL,尤其是InnoDB存储引擎,以及MySQL语法优化方面的详细讲解。 1. **InnoDB存储引擎** - **事务处理**:InnoDB支持ACID(原子性、一致性、隔离性、持久性)事务,确保了数据的一致性。它提供了四种...

    MySQL自整理超全精华版面试八股文

    本文将深入探讨MySQL中的几个关键概念,包括存储引擎、SQL执行过程、索引类型、事务处理以及性能优化策略。 首先,我们来看MySQL的两种主要存储引擎:MyISAM和InnoDB。MyISAM不支持行级别的锁,而InnoDB支持,这...

    根据mysql5.7整理出来的工具文档

    MySQL提供了多种存储引擎,如InnoDB和MyISAM,它们决定了数据如何存储和处理。InnoDB是默认的事务安全引擎,支持ACID特性,行级锁定和外键,适合需要事务处理的场景。MyISAM则以高速插入和查询著称,但不支持事务。 ...

    MySQL基础整理笔记

    ### MySQL基础整理笔记 #### 一、MySQL配置与基本操作 **1. 配置文件 my.ini** - **概述**:`my.ini` 文件是 MySQL 的主要配置文件,用于定义 MySQL 服务的各种参数和设置。 - **作用**:通过修改 `my.ini` 文件...

    mysql详细整理笔记

    ### MySQL详细整理笔记知识点 #### 一、MySQL基础连接与概念理解 - **连接命令**:`mysql -u root -p` 和 `mysql -h 135.136.137.217 -u root -p` 分别用于在本地和远程服务器上以root用户身份登录MySQL数据库。 -...

    mysql面试整理1

    9. **MySQL存储引擎有哪些?** 包括InnoDB、MyISAM、MEMORY、MRG_MYISAM、BLACKHOLE、CSV、ARCHIVE、PERFORMANCE_SCHEMA和FEDERATED等。常用的有InnoDB(支持事务和行级锁)和MyISAM(不支持事务)。 10. **MyISAM...

    mysql优化整理文档

    3. **全文索引的限制**:全文索引仅适用于MyISAM存储引擎,在MySQL 5.6及以上版本也支持InnoDB。 4. **索引的代价**:虽然索引能提高查询效率,但它们会占用磁盘空间并增加增删改操作的成本。 5. **索引优化技巧**:...

    MySQL参考手册(个人整理)

    这份"MySQL参考手册(个人整理)"包含了丰富的资源,帮助用户深入理解和掌握MySQL的使用。 `mysql中文手册.chm`提供了全面的MySQL中文文档,这对于初学者和经验丰富的开发者来说都是宝贵的资源。手册通常会涵盖以下...

    MySql各版本资源整理,比那个50分的便宜

    本资源整理主要关注MySQL的不同版本及其特性,旨在帮助用户根据需求选择合适的版本。 MySQL的主要版本包括: 1. 社区版(Community Edition):这是MySQL的基础版本,免费且开源,适用于开发和测试环境。社区版...

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

    1、MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎的主要特点 MyISAM存储引擎的特点是:表级锁、不...

    mysql ocp 实战整理题库,高命中率.docx

    ### MySQL OCP 实战整理题库知识点解析 #### 题目一: **题目内容**: Which MySQL utility program should you use to process and sort the slow query log based on query time or average query time? A. ...

    MySQL高级优化_整理.docx

    MySQL采用插件式存储引擎架构,允许不同的存储引擎对数据存储和访问方式有不同的实现。例如,InnoDB引擎支持事务处理和行级锁定,适合高并发事务场景;MyISAM则强调快速读取,不支持事务,适用于读多写少的应用。 ...

    自整理! 最全mysql笔记

    - 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果 - 如果只有INSERT和SELECT操作,可以选择Archive,...

    Mysql面试题详解(个人整理)

    面试中,MySQL的知识点涵盖了从基础到高级的各种主题,包括但不限于数据库引擎的选择、事务处理、锁机制、索引优化、存储结构以及数据恢复策略等。以下是对这些重要知识点的详细解释: 1. **MySQL常用引擎**: - *...

Global site tag (gtag.js) - Google Analytics