`
fish_no7
  • 浏览: 27776 次
文章分类
社区版块
存档分类
最新评论

mysql 引擎学习札记

阅读更多

1. ISAM : 擅长读取,读取速度快,且不占用大量的内存和存储,缺点:不支持事务,不能容错(说法有待商榷)
2. MYISAM: ISAM的扩展格式和缺省的数据库引擎;提供了ISAM没有的索引支持和大量的字段管理功能,而且提供了一种称为表格锁定的机制,来优化并发的读写,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MYISAM强调了快速读取操作,这就是为什么mysql受到了WEB开发如此亲睐的原因,因为WEB大量的操作都是读。所以大多数虚拟机提供商和INTERNET平台提供商支持MYISAM格式。缺点:不能在表损坏后修复
HEAP:允许只驻留在内存中的,驻留在内存中临时表的操作要比ISAM和MYISAM多要快。但是它管理的数据都是不稳定的,如果在断电前没有保存,那么所有的数据都会丢失,在数据行被删除的时候,他也不会浪费大量的空间,HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用
4.InnoDB:尽管要比ISAM和MYISAM慢很多,但是InnoDB包括了对事物处理和外来键的支持,这两点都是ISAM和MYISAM没有的。

    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.不需要事务2.频繁的查询,很少的插入
          innoDB适合:1.可靠性要求比较高,或者要求事务
                      2.比较频繁的插入和修改操作,并且表锁定的机会比较高


附上别人的测试报告:

所有的性能测试在: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


原文详见:http://www.cnblogs.com/sopc-mc/archive/2011/11/01/2232212.html




分享到:
评论

相关推荐

    mysql学习札记.zip

    这份"mysql学习札记.zip"文件显然包含了作者在学习MySQL过程中积累的知识和经验,可能是笔记、示例代码或者教程。虽然没有具体的标签来细化主题,但我们可以根据常见的MySQL学习路径来探讨一些关键知识点。 首先,...

    MySQL存储引擎学习

    MySQL存储引擎学习 MySQL存储引擎是MySQL数据库管理系统的核心组件之一,负责数据的存储和提取。 MySQL的存储引擎架构可以分为四个层次:连接层、服务层、引擎层和存储层。其中,引擎层是存储引擎的真正实现者,...

    mysql学习资料大全

    这份"mysql学习资料大全"包含了一系列的资源,对于想要学习或深入理解MySQL的人来说,是一份非常宝贵的资料集。 首先,从标题我们可以推断,这份资料可能涵盖了MySQL的基础到进阶内容,包括安装配置、SQL语言基础、...

    mysql-存储引擎-实验四.docx

    MySQL 存储引擎实验报告 本实验报告的主要内容是了解 MySQL 存储引擎的概念、设置和特点,并掌握 MySQL 存储引擎的使用方法。实验中涉及到多种存储引擎,包括 MyISAM 和 InnoDB,考察它们的相同点和区别,并对它们...

    MySQL存储引擎简介

    MySQL存储引擎是数据库管理系统中负责数据存储和索引管理的核心组件,它允许MySQL数据库系统在不同的存储需求下灵活选择最优的存储方案。在众多数据库系统中,MySQL独树一帜,提供了多种存储引擎供用户选择,使得...

    mysql中的表引擎

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

    官方mysql5.6学习手册

    在具体技术细节方面,手册可能涉及到了许多具体的MySQL 5.6特性和改进,包括但不限于InnoDB存储引擎的增强、复制功能的改进、性能优化、可扩展性的提升以及安全性的加强等。 由于手册还覆盖了NDB Cluster 7.3及7.4...

    MySQL学习资料PDF

    总的来说,这些书籍共同构成了一个完整的MySQL学习路径,从基础操作到高级性能优化,再到特定存储引擎的深入研究。无论是初学者还是有经验的开发者,都能从中获益匪浅。学习这些内容不仅可以帮助你掌握数据库管理的...

    mysql DBA学习笔记

    MySQL性能优化是DBA的核心工作之一,包括查询优化、索引设计、存储引擎的选择(InnoDB vs MyISAM)、事务处理和并发控制。笔记会探讨如何通过EXPLAIN分析查询执行计划,以及如何利用慢查询日志来定位性能瓶颈。 六...

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

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

    MySQL存储引擎解析.doc

    MySQL存储引擎是数据库管理系统的核心组成部分,负责数据的存储和访问方式。MySQL系统由多个组件构成,包括管理工具、连接池、SQL接口、分析器、优化器、缓存、存储引擎和硬盘。其中,存储引擎是专门处理表数据的...

    MySQL数据库引擎快速指导

    MySQL数据库引擎是数据库管理系统的核心组件,它决定了数据的存储方式、访问效率以及支持的功能。MySQL提供了多种数据库引擎供用户根据具体需求选择,每种引擎都有其特定的优势和适用场景。 默认情况下,MySQL安装...

    MYSQL最全的学习资料

    个人推荐mysql学习资料, 很不错,好东西不但要珍藏,还要分享

    MySQL内核:InnoDB存储引擎 卷1.pdf

    《MySQL内核:InnoDB存储引擎 卷1》由资深MySQL专家,机工畅销图书作者亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的...

    MySQL存储引擎源码学习.zip

    MySQL存储引擎源码学习是一个深度探索数据库管理系统内部机制的重要主题,尤其对于想要深入了解MySQL数据库运行原理的开发者来说,这是不可或缺的知识。MySQL支持多种存储引擎,每个引擎都有其独特的特性和适用场景...

    java开发环境+mysql经典面试题+mysql概念学习

    java开发环境+大数据开发环境+mysql经典面试题+mysql概念学习 java开发环境+大数据开发环境+mysql经典面试题+mysql概念学习 java开发环境+大数据开发环境+mysql经典面试题+mysql概念学习 java开发环境+大数据开发...

    mysql学习用数据库dbt3

    在这个“mysql学习用数据库dbt3”压缩包中,包含了一个名为“dbt3_s1.sql”的文件,这通常是用来初始化或恢复数据库的SQL脚本。 在学习MySQL的过程中,理解数据库的设计和管理至关重要。DBT3提供了一种实践环境,让...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    深入学习《MySQL内核:InnoDB存储引擎 卷1》,读者可以了解到InnoDB的内部工作机制,如如何处理B+树索引、事务的提交与回滚、锁的实现以及内存管理等内容,这对于优化数据库性能、解决并发问题、设计高效的数据模型...

Global site tag (gtag.js) - Google Analytics