`
hekuilove
  • 浏览: 158195 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

MySQL之存储引擎

阅读更多
学习MySQL存储引擎之前,要先了解什么是存储引擎。

存储引擎:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。


我们可以使用如下sql查询表的存储引擎
show table status like '表名'

返回结果集的Engine为该表的存储引擎



MySQL中的存储引擎从事务的角度来讲可分为两类
事务性存储引擎
非事务型存储引擎
MySQL最常用的两种存储引擎无非是InnoDB和MyISAM,相信只要接触过MySQL的人都会对这两种存储引擎有所了解。笔者下面着重来讲一下MySQL的几种存储引擎

●InnoDB存储引擎

InnoDB是MySQL默认的事务性存储引擎,也是使用最多,运用最广泛的存储引擎,它被设计用来处理大量的短期事务,短期事务大部分情况是正常提交的,很少会被回滚。InnoDB的性能和自动崩溃恢复特性,是的它在非事务存储引擎的需求中也很受欢迎。除非有非常特别的原因需要使用其它的存储引擎,否则应该优先考虑InnoDB引擎。当然也不是InnoDB也能适用于所用的场景,在实际开发中,每个开发人员应该着重从自己的业务点出发,从而选择适合自己的存储引擎。

InnoDB的数据存储是在tablespace中,tablespace是由一系列的数据文件组成。InnoDB可以将每个表的数据和索引放在单独的文件中。
InnoDB采用了MVCC来支持高并发,并且实现了4个标准的事务隔离级别,默认级别为REPEATABLE READ,同时通过间隙锁(next-key locking)策略来防止幻读的出现


●MyISAM存储引擎
在早期的MySQL,MyISAM是默认的存储引擎,MyISAM提供了大量的特性,包括全文索引、压缩等。但是,MyISAM引擎是不支持事务和行级锁的,这可能是该存储引擎最大的一个缺陷。尽管如此,MyISAM还是会有它自己的优势。任何事物都不是绝对的,技术也是如此。没有最好的技术,只有最合适的技术。每个程序员都应该选择最符合自己业务的技术。对于readonly的数据,或者表比较小的,则效率要高于InnoDB

MyISAM引擎的存储分为两个部分,数据文件和所以文件,分别已.myd和.myi为扩展名。


●Archive存储引擎
此储存引擎只支持INSERT和SELECT操作,Archive引擎会缓存所有的写并利用zlib对插入的行进行压缩,所以比MyISAM表的磁盘I/O更少。但是每次select查询都需要执行全表扫描。
Archive引擎支持行级锁和专门的缓冲期,可以实现高并发的插入。在一个查询开始知道返回表中存在的所有行数之前,Archive引擎会阻止其它的SELECT操作。 另外,Archive引擎在批量插入完成之前对读操作是不可见的。Archive引擎是非事务引擎,专门针对高速插入和压缩的简单引擎。


●CSV存储引擎
这个引擎可以将普通的CSV文件作为MySQL的表来处理,但这种表不支持索引。只需要将CSV文件copy到CSV存储引擎的数据目录下,就能使用在MySQL中已表的规则打开使用


●Memory存储引擎
这是一个完全为缓存而生的存储引擎,重启电脑之后,该引擎会持久化表结构,但不会持久化数据。它所有的数据都保存在内存里,完全没有I/O操作,所以性能非常高。
另外Memory表支持Hash索引,因此查询操作非常快,如果我们在开发过程中需要临时表或中间表用来存储一下临时数据,或许这个引擎是个不错的选择




MySQL还有许多其它的引擎,如
Blackhole引擎
Merge引擎
NDB引擎


除此之外还有大量的第三方引擎,一种比较牛逼的有
OCTP类引擎  该引擎貌似有替代InnoDB的趋势
面向列的存储引擎
社区存储引擎
分享到:
评论

相关推荐

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

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

    MySQL存储引擎简介

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

    mysql存储引擎介绍

    MyISAM 存储引擎是 MySQL 的默认存储引擎之一。它不支持事务,也不支持外键,适合访问速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用。每个 MyISAM 在磁盘上存储成 3 个文件,其中文件名和表名都...

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

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

    mySql 存储引擎 启用 Innodb

    ### MySQL存储引擎启用InnoDB详解 #### 一、引言 在MySQL数据库系统中,存储引擎扮演着极其重要的角色,它决定了数据如何被存储、检索和管理。其中,InnoDB作为MySQL中最常用的存储引擎之一,提供了众多高级特性,...

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

    《MySQL内核:InnoDB存储引擎 卷1》是一本深度探讨MySQL数据库系统核心部分——InnoDB存储引擎的专业书籍。这本书以超高清的PDF格式呈现,包含详细的书签,便于读者快速定位和查阅相关内容。InnoDB作为MySQL中最常用...

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

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

    mysql内核 innodb存储引擎

    《MySQL技术内幕:InnoDB存储引擎》是国内目前唯一的一本关于InnoDB的著作,由资深MySQL专家亲自执笔,中外数据库专家联袂推荐,权威性毋庸置疑。内容深入,从源代码的角度深度解析了InnoDB的体系结构、实现原理、...

    MYSQL数据库存储引擎介绍

    对于MYSQL常见的数据库存储引擎做了介绍,DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni等

    MySQL数据库:MySQL存储引擎.pptx

    而MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎,MySQL的核心就是存储引擎。 ;MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、...

    mysql-存储引擎和数据库对象实验五.docx

    MySQL 存储引擎和数据库对象实验报告 本实验报告主要介绍 MySQL 中的存储引擎和数据库对象,涵盖了 MEMORY 存储引擎、MERGE 存储引擎、CHAR、VARCHAR、TEXT、BLOB 等类型的使用和特点,以及浮点数、定点数、日期...

    MySQL内核 INNODB存储引擎-卷1-高清-完整目录-2014年5月

    MySQL内核 INNODB存储引擎-卷1-高清-完整目录-2014年5月

    MySQL存储引擎学习

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

    MySQL课程之MySQL存储引擎入门

    MySQL是世界上最流行的关系型数据库管理系统之一,其强大的功能和灵活性主要得益于它支持多种存储引擎。在MySQL课程中,深入理解存储引擎是至关重要的,因为不同的存储引擎有着不同的特性和适用场景,这直接影响到...

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

    - **MyISAM**:这是MySQL的默认存储引擎之一,适用于Web应用和数据仓库环境。MyISAM不支持事务处理,但它提供了较快的读写速度,非常适合于读多写少的应用场景。 - **InnoDB**:广泛应用于需要事务支持的应用程序中...

Global site tag (gtag.js) - Google Analytics