数据库和数据库实例

  • 数据库是所有文件的集合,是依照某种数据模型组织起来的数据集合。

  • 而数据库实例,指的是程序,是位于用户与操作系统之间的一层数据管理软件,用户通过数据库实例对数据库进行操作。

数据库不是文件系统,它区别于文件系统的不同之处在于,数据库需要支持锁、支持事务等。

MySQL体系结构

在MySQL 5.1中,MySQL AB引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中。



MySQL由图中描述的这几个部分组成:

  • 连接池组件,实际编码中应该接触很多

  • 管理服务和工具组件

  • SQL接口组件

  • 查询分析器组件

  • 优化器组件

  • 缓冲组件

  • 插件式存储引擎<存储引擎是基于表的、使用较为广泛的是Innodb存储引擎>

  • 物理文件

插件式存储引擎式架构是MySQL区别于其它数据库的地方,该架构中,存储引擎的底层物理结构可以按照引擎开发者的意愿来实现。

MySQL各存储引擎特性

Innodb存储引擎

  1. 它是我们这个系列的主角,也是日常开发中,使用最多的存储引擎;它主要的设计目标是为了支持那些面向在线事务处理(OLTP)的应用,主要的特点是行锁设计,支持外键。

  2. Innodb存储引擎将数据存放于逻辑表空间中,这个表空间由Innodb存储引擎自身进行管理,对上层用户透明,它还支持将每个表单独存放到独立的 .idb 文件中。

  3. Innodb支持行多版本技术,以提高并发,后续章节将细说。除此之外Innodb还提供了插入缓冲(insert buffer)、二次写、自适应哈索引、预读等提高性能和可用性的功能。

  4. 对于表中数据行的存储,MySQL使用聚集索引,就是说每行数据根据主键按序存储;值得一提的是,MySQL的辅助索引虽然也是按辅助索引的键值排序存放,但是辅助索引不存储完整的数据行,只是存储了到主键的映射,使用辅助索引不可避免的最后会进行一次离散读,获取到实际的行数据。

MyISAM

  • 它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。支持全文索引,对基于MyISAM引擎的表,MySQL只缓存.MYI索引文件, 而.MYD数据文件由操作系统本身来维护;需要注意的是区别于别的存储引擎,"它不支持事务",不支持行锁设计,主要面向[OLAP] 数据库应用。

  • OLAP(Online analytical processing),即联机分析处理,主要用于支持企业决策管理分析。

BDB:

可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

Memory

将所有数据保存在RAM中,它使用哈希索引,可以提供常熟时间的访问,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。存在的风险是,如果服务器宕机,将导致内存中的数据丢失。此外还存在使用上的限制,它只支持表锁性能较差,不支持BLOB、TEXT类型字段。

Archive

为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。Archive只支持insert 和select ,它使用zlib算法将数据行压缩,它非常适合存储归档数据、日志信息;它使用行锁来实现高并发的插入操作,但是它本事不是事务安全的存储引擎。他的设计目标主要是为了,提供高速的插入和压缩功能。

Federated

Federated不存放数据,它只是指向一台远程MySQL数据库服务器上的表类似Oracle的透明网关。它能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

时至今日MySQL已经有了很多的存储引擎,官方引擎以及强大的第三方引擎,我们可以根据具体的应用场景选择适当的存储引擎。

Innodb学习之MySQL体系结构的更多相关文章

  1. MySQL学习笔记-MySQL体系结构总览

    MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...

  2. MySQL 体系结构以及各种文件类型学习汇总 (转)

    1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...

  3. (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)

    目录 1.学习笔记之mysql体系结构(C/S架构) 2.mysql整体架构 3.存储引擎 4.sql语句处理--SQL层(内存层) 5.服务器内存结构 6.mysql如何使用磁盘空间 7.mysql ...

  4. (1.1)学习笔记之mysql体系结构(内存、进程、线程)

    关键词:mysql体系结构 参考:https://www.cnblogs.com/zhoubaojian/articles/7866292.html 一.mysql体系架构概述 1.mysql体系结构 ...

  5. MySQL体系结构以及各种文件类型学习

    1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...

  6. MySQl学习-——Mysql体系结构与Mysql存储引擎

    Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图:

  7. MySQL技术内幕InnoDB存储引擎(一)——MySQL体系结构和存储引擎

    1.数据库和实例 数据库(database)和实例(instance)不能混淆. 什么是数据库 数据库是物理操作系统文件或其他文件类型的集合.说白了,就是存储着的文件,不会运行起来,只能被实例增删改查 ...

  8. 第四课(1)——MySQL体系结构

    学习目标 一.MySQL体系结构 二.MySQL内存结构 三.MySQL文件结构 四.Innodb体系结构 MySQL体系结构 一.MySQL体系结构图 1.Mysql是由SQL接口,解析器,优化器, ...

  9. MySQL体系结构与存储引擎

    MySQL 体系结构 先看 MySQL 数据库的体系结构,如下图所示. MySQL 体系结构由 Client Connectors 层.MySQL Server 层及存储引擎层组成. Client C ...

  10. 前端学习数据库MYSQL

    这篇文章主要写了 1.数据库MYSQL 2.基本上会遇到的所有SQL语句 数据库可视化软件------Navicat 数据库里边存放的是表,表与表之间是有关联的,而且可以对表进行相关操作(增,删,改, ...

随机推荐

  1. [转帖]资料整理——Oracle版本历史(很全面)(Releases and versions of Oracle Database)

    资料来源: https://en.wikipedia.org/wiki/Oracle_Database Oracle Database Version Initial Release Version ...

  2. [转帖]第24/24周 数据库维护(Database Maintenance)

    https://www.cnblogs.com/woodytu/p/4795542.html 哇哦,光阴似箭!欢迎回到性能调优培训的最后一期.今天我会详细讲下SQL Server里的数据库维护,尤其是 ...

  3. [转帖]命令行非明文密码连接 TiDB

    https://tidb.net/blog/6794a34b#%E6%96%B9%E5%BC%8F%E4%B8%80%EF%BC%9A%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BE ...

  4. [转帖]jcmd命令详解

    1 基本知识 jcmd 是在 JDK1.7 以后,新增了一个命令行工具. jcmd 是一个多功能的工具,相比 jstat 功能更为全面的工具,可用于获取目标 Java 进程的性能统计.JFR.内存使用 ...

  5. [转帖]linux性能优化-CPU利用率

    参数说明 /proc/stat提供系统的CPU和任务统计信息. user(us): 用户态CPU时间,不包括下面的nice时间,但包括了guest时间. nice(ni): 代表低优先级用户态CPU时 ...

  6. [转帖]TCP之Nagle、Cork、Delay ACK(延迟确认)

    https://www.jianshu.com/p/167ba81206fb 参考资料 TCP协议中的Nagle算法 TCP中的Nagle算法 Linux下TCP延迟确认(Delayed Ack)机制 ...

  7. docker 镜像导出和导入(适用于内网无法拉镜像的问题)

    1.在外网将镜像从指定的仓库拉下来 docker pull consul 现在已将consul镜像拉到了可连外网的服务器  2.将镜像把包到指定的tar文件中 docker save consul:l ...

  8. 手撕Vue-监听数据变化

    经过上一篇的介绍,已经实现了将模板编译成具体数据,接下来要介绍的是如何监听数据的变化,本章主要完成这个需求即可. 在我们文章的开始,我写了一个 Vue 双向数据绑定原理的文章当中封装了一个 Obser ...

  9. 深度学习应用篇-计算机视觉-语义分割综述[6]:DeepLab系列简介、DeepLabV3深入解读创新点、训练策略、主要贡献

    深度学习应用篇-计算机视觉-语义分割综述[6]:DeepLab系列简介.DeepLabV3深入解读创新点.训练策略.主要贡献 0.DeepLabV3深入解读 1.DeepLab系列简介 1.1.Dee ...

  10. Python 使用Scapy构造特殊数据包

    Scapy是一款Python库,可用于构建.发送.接收和解析网络数据包.除了实现端口扫描外,它还可以用于实现各种网络安全工具,例如SynFlood攻击,Sockstress攻击,DNS查询攻击,ARP ...