MySQL存储引擎Myisam和Innodb

上传人:大米 文档编号:491715921 上传时间:2023-01-02 格式:DOC 页数:22 大小:566.50KB
返回 下载 相关 举报
MySQL存储引擎Myisam和Innodb_第1页
第1页 / 共22页
MySQL存储引擎Myisam和Innodb_第2页
第2页 / 共22页
MySQL存储引擎Myisam和Innodb_第3页
第3页 / 共22页
MySQL存储引擎Myisam和Innodb_第4页
第4页 / 共22页
MySQL存储引擎Myisam和Innodb_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《MySQL存储引擎Myisam和Innodb》由会员分享,可在线阅读,更多相关《MySQL存储引擎Myisam和Innodb(22页珍藏版)》请在金锄头文库上搜索。

1、以下文章收集的主题包括:MylSAM和Innodb(及其他)存储引擎的特点、优势、缺点,技术细节差异,这两者的性能表现的比较,各自适合应用于怎样的业务和项目。Innodb 对事务控制的支持(原理),行级锁,具体操作。检查修复工具myisamchk 和mysqlcheck 对MylSAM 的支持(和对Innodb 的部分支持),MylSAM的备份与恢复技 巧。Innodb 数据文件ibdata* 和日志文件ib_logfile* 。 Innodb 的Per-Table 表空间。MySQL数据表在系统中表现形式有:ISAM、MyISAM、MERGE、BDB、InnoDB 和HEAP。每种数据表在文

2、件系统中都有不同的表示方式,有一个共同点就是每种数据表至少有一个存放数据表结构定义的.frm文件o ISAM 数据表是最原始的数据表 (.frm,.ISD,.ISM ), MylSAM 数据表是ISAM 数据表的继承者。InnoDB 由于采用表空间的概念来管理数据表,所以它只有一个与数据表对应.frm文件,同一目录下的其它文件表示为表空间,存储数据表的数据和索引。数据目录是用来存放数据表和相关信息的地方,是数据库的核心。在WINDOWS 系统上,数据目录的位置默认是在c:/mysql/data中。数据目录除存放数据库文件外,还会存放日志文件,状态文件,配置文件,DES密钥文件或服务器的 SSL

3、证书与密钥文件等。在MySQL中,每个数据库其实就是在数据目录下一个子 目录,show databases命令相当于列出数据目录中的目录清单。所以可以通过操作数据目录中的子目录来新建(create )、删除(drop )数据库。但 drop database db_name 命令不能删除 db_name目录中创建的 其它非数据表文件;且由于 InnoDB是表空间来管理数据表,所以不能用 rm或del命令删除InnoDB的数据 表。参照:mysql 学习笔记第三章:D:superFileDocumentsA-学习编程数据库完整教程_mysql学习笔记.docMySQL Storage Engin

4、e 小记这段时间在看High Performance MySQL,看到存储引擎这个地方感到很多细节比较陌生,所以总结小记止匕 o为了适应各种不同的运行环境,MYSQL!供了多种不同的存储引擎(Storage Engine ),在应用程序开发这个层面上,开发者可以根据不同的需求选择适合的Storage Engine方案,更为灵活的是,你可以根据每张表将要存储数据的特点,选择不同的Storage Engine,也就是说,在一个 MYSQ数据库中,可以混合使用多种不同的 Storage Engine首先小瞥一下 MySQ啲体系结构,在最高抽象层度下,可以用Garlan & Shaw的分层结构体系来表

5、示(左)DaiaDJSt Liiyenefl AjchirecMireI jqure It Datdliasc Layered ArchitectirreHigh L&vei Logic冷! M/SQLContptual ArchltetuFiourc 2: tieiierjl High Level RDBMS Loglcnl Modtiln其中应用层为所有 RDBM用户提供用户接口,逻辑层包括了所有核心功能的实现,物理层则负责将数据存储 在硬件设备上。图中右侧更为具体的描述了逻辑层的组成,查询处理子系统、事务管理子系统、恢复管理子系统和存储管理子系统共同组成了 MySQL的逻辑层。相信Sto

6、rage Engine 的位置是在 Storage Management处,既StorageEngine属于Storage Management子系统的一部分为了让思路更清晰一些,下面给出一幅比较全面的体系结构图(或更确切的说是流程图,只是忽略了反馈)Detailed Heterogeneous Conceptikii MySQL ArclutectureTran paction MsinsgfTwrilTran paction MsinsgfTwrilCorcjrir-Ti-CDitroCorcjrer-Ti-C&itrc-ffiagerVina 芦TranBsclFsxi Mar旳erTr

7、anBsclFsxi Mar旳erMs n and vlrua MBircry (includ&a all yfTeriipnaican dibk* SwckndGTy storage (io1 书EL a3s.D38i ri dv slat st MiInx虬 aati, ano me恂站施晴忖斫Figure 3: Detailed Heterogeneous ConceptUcil MySQL上面三幅图来自于一篇非官方(不保证百分百的正确)的MySQ体系结构的报告,与High Performance MySQ 一书中给出的MySQL大体结构(下图,基本对应于Logic Layer,从第一幅

8、图右侧可以看出MySQLogic layer同样遵从分层体系结构)还是比较吻合的。(onnection manatiTim securityStorage engine连接上图中第二层和第三层之间的接口是并不针对任何存储引擎的单一API,.大概由20个基本的类似“启动事务,返回结果集”等函数组成。存储引擎并不处理SQL相互之间也不通信,它们的任务只是简单的响应高层传来的请求。存储引擎各自的一些特点上面提到的四种存储引擎都有各自适用的环境,这取决于它们独有的一些特征。主要体现在性能、事务、并发控制、参照完整性、缓存、故障恢复,备份及回存 等几个方面。目前比较普及的存储引擎是MylSAM和Inno

9、DB.而MylSAM又是绝大部分 Web应用的首选。MylSAM与InnoDB的主要的不同点在于性能和事务控制上。MylSAM是早期 ISAM(lndexed Sequential Access Method,我现在用的 MySQL5.0已经不支持 ISAM 了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率 这样一种情况,因此ISAM以及后来的MylSAM都没有考虑 对事务的支持,排除了 TPM不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MylSAM在继承了这类优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁,虽然MylSAM

10、本身不支持容错,但可以 通过myisamchk进行故障恢复。而且由于MylSAM是每张表使用各 自独立的存储文件(MYD数据文件和MYI索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还 支持在线恢复。所以如果你的应用是不需要事务,处理的只是基本的CRUD操作,那么MylSAM是不二选择InnoDB被设计成适用于高并发读写的情况.使用MVC(Multi-Version Concurrency Control)以及行级锁来提供遵从ACID的事务支持。InnoDB支持外键参照完整性,具备故障恢复能力。另外InnoDB的性能其实还是不 错的,特别是在处理大数据量的情况下,用官方的话说就是:I

11、nnoDB的CPC效率是其他基于磁盘的关系数据 库存储引擎所不能比的。不过InnoDB的备份恢复要麻烦一点,除非你使用了 4.1以后版本提供的Mulit-tablespace 支持,因为InnoDB和MylSAM不同,他的数据文件并不是独立对应于每张表的。而是使用 的共享表空间,简单的拷贝覆盖方法对他不适用,必须在停掉MYSQI后对其进行数据恢复。使用Per-TableTablespacesd,使其每张表对应一个独立的表空间文件,则情况要简单很多。一般来说,如果需要事务支持,并且有较高的并发读写频率,InnoDB是不错的选择。要是并发读写频率不高 的话,其实可以考虑 BDB,但由于在MySQL

12、5.1及其以后版本中,将不再提供 BDB支持。这个选项也就没有了至于Heap和BDB(Berkeley DB ),相对来说,普及率不如前两种,但在有些情况下,还是挺适用的Heap存储引擎就是将数据存储在内存中,由于没有磁盘I./0的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。Heap挺适合做测试的时候使用BDB是 MySQL第一款事务安全的存储引擎。在Berkeley DB database library的基础上建立,同样是事务安全的,但BDB的普及率显然不及InnoDB,因为大多数在 MySQL中寻找支持事务的存储引擎的同时也在找支持 MVC(或是行级锁定存

13、储引擎,而BDB只支持Page-level Lock 。附上一张High Performance MySQL中的各存储引擎的特性表AttributeMyISAMHeapBDBnnoDBTransactionsNoNoYesYesLock granularityTable-TablePage (8 KB)RowStorageSplit filesn-memory、Single file per tableTablespace(s)Isolation levelsNoneNoneRead committedAllPortable formatYesN/ANoYesReferential integ

14、rityNoNoNoYesPrimary key with dataNoNoYesYesMySQL caches data recordsNo、YesYesYesAvailabilityAll versions/All versionsMySQL-MaxAll Versions来源:http:/ 引擎与InnoDB引擎性能简单测试硬件配置CPU : AMD2500+ (1.8G)内存:1G/现代硬盘:80G/IDE软件配置OS : Windows XP SP2SE : PHP5.2.1DB : MySQL5.0.37Web: IIS6MySQL表结构CREATETABLEmyisam (id

15、int (11) NOTNULLauto_increment,name varchar (100) default NULLcontent text ,PRIMARYKEY (id)ENGINE=MylSAM DEFAULTCHARSETgbk;CREATETABLEinnodb (id int (11) NOTNULLauto_increment,name varchar (100) default NULLcontent text ,PRIMARYKEY (id)ENGINE=InnoDB DEFAULTCHARSETgbk;数据内容$name = heiyeluren;$content = MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号