【整理】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技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...
7. 存储引擎:MySQL支持多种存储引擎,如InnoDB(支持事务处理,行级锁定)、MyISAM(读写速度快,不支持事务)等。 二、MySQL优化 1. 查询优化:避免全表扫描,合理使用索引,减少JOIN操作,优化SQL语句结构,...
MySQL优化精华整理文档是针对数据库性能提升的一份详细指南,涵盖了多个关键方面,旨在帮助管理员和开发者提升数据库的运行效率。以下是对各个知识点的详细解释: 1. **我们可以且应该优化什么?** - 优化的目标...
MySQL 源码分析整理 MySQL 源码分析是了解 MySQL 内部实现机制的一种方式,它可以帮助我们更好地理解和优化 MySQL 的性能。通过对 MySQL 源码的分析,我们可以了解 MySQL 的内部实现机制,从而实现更高级别的性能...
这些笔记涵盖了MySQL优化的主要方面,包括查询优化、SQL编写技巧、数据库设计、存储引擎选择、服务器配置、硬件升级、定期维护以及使用各种工具进行监控和调优。通过这些方法,你可以有效地提升MySQL数据库的运行...
以下是对MySQL,尤其是InnoDB存储引擎,以及MySQL语法优化方面的详细讲解。 1. **InnoDB存储引擎** - **事务处理**:InnoDB支持ACID(原子性、一致性、隔离性、持久性)事务,确保了数据的一致性。它提供了四种...
这份"2023年整理MySQL常见面试题与答案.pdf"文档很可能是针对求职者准备MySQL面试所设计的资料,涵盖了MySQL的基础知识、进阶特性、性能优化和故障排查等内容。 1. **MySQL基础知识** - 数据类型:了解MySQL中的...
1、MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎的主要特点 MyISAM存储引擎的特点是:表级锁、不...
- 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果 - 如果只有INSERT和SELECT操作,可以选择Archive,...
本资源包“Mysql源码整理_news4ep_mysql源码_MYSQL_”是数据库学习者在研究MySQL源码过程中的笔记和资料集合,旨在帮助用户更深入地了解MySQL的内部工作机制。 MySQL源码的学习可以从以下几个关键方面展开: 1. **...
这份"MySQL参考手册(个人整理)"包含了丰富的资源,帮助用户深入理解和掌握MySQL的使用。 `mysql中文手册.chm`提供了全面的MySQL中文文档,这对于初学者和经验丰富的开发者来说都是宝贵的资源。手册通常会涵盖以下...
本资源整理主要关注MySQL的不同版本及其特性,旨在帮助用户根据需求选择合适的版本。 MySQL的主要版本包括: 1. 社区版(Community Edition):这是MySQL的基础版本,免费且开源,适用于开发和测试环境。社区版...
面试中,MySQL的知识点涵盖了从基础到高级的各种主题,包括但不限于数据库引擎的选择、事务处理、锁机制、索引优化、存储结构以及数据恢复策略等。以下是对这些重要知识点的详细解释: 1. **MySQL常用引擎**: - *...
MySQL采用插件式存储引擎架构,允许不同的存储引擎对数据存储和访问方式有不同的实现。例如,InnoDB引擎支持事务处理和行级锁定,适合高并发事务场景;MyISAM则强调快速读取,不支持事务,适用于读多写少的应用。 ...
这些笔记出自小赵同学之手,他整理了一系列的基础知识点,每个知识点都附带有示例代码和运行截图,非常适合初学者快速掌握MySQL的基础知识。 首先,关于数据库的创建和操作,小赵同学的笔记中提到了以下几点: 1. ...
从入门到精通的整理V2版,对MySQL的基本概念、结构、特性和优化等方面进行了详细的阐述,适合初学者和有经验的数据库管理员(DBA)进行学习和参考。 首先,了解数据库的基本概念至关重要。数据库是存储、管理、处理...
### 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中的几个关键概念,包括存储引擎、SQL执行过程、索引类型、事务处理以及性能优化策略。 首先,我们来看MySQL的两种主要存储引擎:MyISAM和InnoDB。MyISAM不支持行级别的锁,而InnoDB支持,这...
2. **安装与配置**:首先,你需要在你的计算机上安装MySQL服务器,并设置相应的配置,包括设定root用户的密码,选择存储引擎等。 3. **数据库和表**:在MySQL中,数据库是数据的容器,而表是数据库中的数据结构,...
- 经过多年的发展,MySQL逐步演变为支持ISAM存储引擎等更高效的数据管理技术。 - 2000年,MySQL公开源代码,采用GPL许可证,正式成为开源项目。 #### 二、MySQL的功能模块及协同工作原理 - **功能模块**:MySQL...