mysql的体系架构和存储引擎
定义数据库和实例
数据库:物理操作系统的文件或其他形式文件类型的集合。在mysql数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。
实例:MySQL数据库由后台线程以及一个共享内存组成。共享内存可以被运行的后台线程所共享。数据库实例才是真正用于操作数据库文件的。
数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件
用户对数据库数据的 数据定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
在MySQL数据库中实例与数据库的关系是一一对应的一个数据库实例对应一个数据库,一个数据库对应一个实例。
MySQL是一个单进程多线程的数据库
MySQL的体系结构

MySQL由一下几部分组成
1:线程连接池
2:SQL查询接口
3:查询分析器(进行词法分析,语义分析)
4:优化器(用来选择最优的语法生成树)
5:缓存 (缓存有两个用处,1:缓存线程 2:缓存查询结果)
6:插件式存储引擎
7:数据记录即文件(保存在磁盘)
需要注意的是存储引擎是基于表的,而不是基于库的
MySQL的存储引擎
InnoDB存储引擎
InnoDB存储引擎支持事务,设计目标主要面向在线事务处理(OLTP)其特点是行锁设计、支持外键、非锁定读、InnoDB引擎将数据放在一个逻辑的表空间中
表空间分为共用表空间(ibdata1 回滚信息(undo),插入缓冲索引页、系统事务信息,二次写缓冲)和独立表空间(.ibd结尾的文件该文件主要用来放数据和索引)
InnoDB使用多版本并发(MVCC)来获取高并发性 select不会对行记录加锁
MySQL实现了SQL标准的4种隔离级别(read uncommited, read commited、repeated read 、serializalable)
MySQL默认为 repeated read 同时使用next-key locking 锁来避免幻读(Recoder lock+Gap lock=next-key locking)
InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(使用InnoDB引擎如果对某些数据操纵频繁InnoDB会自动添加哈希索引)
预读 (提前将数据页加载到内存缓冲)
对于表中数据的存储,InnoDB存储引擎采用了聚集索引的方式、每张表的存储都是按主键的顺序进行存放。如果没有显示的在表定义时指定主键,InnoDB存储引擎会为
每一行生成一个6字节的ROWID,并以此为主键。
MyISAM 存储引擎
MyISAM存储引擎不支持事务、表锁设计、支持全文索引,主要面向一些OLAP数据库 、缓冲池只缓存索引文件,而不缓冲数据文件。
MyISAM存储引擎表 由MYD、MYI、frm 组成MYD用来存放数据文件,MYI用来存放索引文件
Maria存储引擎
Maria设计目标主要是用来取代原有的MyISAM存储引擎 Maria存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项
以及更好的BLOB字符类型的处理
连接MySQL
连接MySQL操作是一个连接进程和MySQL数据库实例进行通信 MySQL本质上是通过进程进行通信,常用的进程通信方式有管道、命名管道、命名子、tcp/ip套接字
unix域套接字
TCP/IP套接字方式是MySQL数据库在任何平台下都提供的连接方式,也是网络中使用最多的一种方式 client和server进行连接 连接成功后会这个连接看作一个mysql连接线程
一个线程中可以有多个回话
unix域套接字在linux和unix环境下,还可以使用unix域套接字,unix套接字不是一个网络协议。只能在MySQL客户端和数据库实例在同一台服务器上的情况下使用,用户
可以在配置文件中指定套接字文件的路径。
mysql的体系架构和存储引擎的更多相关文章
- mysql 的逻辑架构 与 存储引擎的介绍
mysql 的逻辑架构分为三层: 最上层的服务大多数基于网络的客户端.服务器的工具或者服务都有类似的架构,比如连接处理,授权认证.安全等 第二层架构:mysql的核心服务功能都在这一层,包括查询解析, ...
- [MySQL Reference Manual]15. 其他存储引擎
15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...
- 《MySQL技术内幕:InnoDB存储引擎(第2版)》书摘
MySQL技术内幕:InnoDB存储引擎(第2版) 姜承尧 第1章 MySQL体系结构和存储引擎 >> 在上述例子中使用了mysqld_safe命令来启动数据库,当然启动MySQL实例的方 ...
- MySql(十一):MySQL性能调优——常用存储引擎优化
一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...
- 时序数据库技术体系 – InfluxDB TSM存储引擎之TSMFile
本文转自 http://hbasefly.com/2018/01/13/timeseries-database-4/ 为了更加系统的对时序数据库技术进行全方位解读,笔者打算再写一个系列专题(嘿嘿,好像 ...
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- mysql-介绍、MySQL部署、数据类型、存储引擎
数据库介绍 什么是数据? 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材.数据是信息的表现形式和载体,可以是符号.文字.数字.语音.图像.视频等. ...
- MySQL教程详解之存储引擎介绍及默认引擎设置
什么是存储引擎? 与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architectu ...
- MySQL 远程连接(federated存储引擎)
标签:federated存储引擎 概述 本文主要介绍通过federated存储引擎建立远程连接表 测试环境:mysql 5.6.21 步骤 开启federated存储引擎 先查看federated存储 ...
随机推荐
- union中的成员不能有构造函数
最近在做项目的CTA测试,快被折腾死了..... -_- 项目中用到的开源库AllJoyn在编译时报错: In file included :, , , , , , , : ./Target/:: e ...
- 传统项目目录结构下maven+junit+junitReport
<build> <defaultGoal>compile</defaultGoal> <sourceDirectory>${basedir}/src&l ...
- [转载]Android开发者必须深入学习的10个应用开源项目
[转载]Android开发者必须深入学习的10个应用开源项目 原文地址:Android开发者必须深入学习的10个应用开源项目(http://blog.sina.com.cn/s/blog_7b8a63 ...
- Servlet基础梳理(四)
本篇说一下session和路径的问题. session: 是一种在server端保存http状态信息的方案.眼下有两种实现方式:基于Cookie或者URL重写. 基于cookie:第一次訪问serve ...
- eclipse工程重命名后,无法生产class问题
在很多时候我们对project重新命名后,class文件始终没有生产,尤其是在web项目的时候,如果不注意class文件生成问题,会浪费大量的时间找错误.这里分享下如何解决eclipse重命名后cla ...
- blog url.txt
java 回收机制与虚拟机http://www.cnblogs.com/zhanglei93/p/6636831.html Java 编程经验(牛人写的) 上/下http://www.thinksa ...
- UICollectionViews有了简单的重排功能
代码地址如下:http://www.demodashi.com/demo/13213.html 一.前言 我是UICollectionView的忠实粉丝.这个类比起它的老哥UITableView类具有 ...
- python challenge答案参考
Solutions to python challenge. http://garethrees.org/2007/05/07/python-challenge/ https://github.com ...
- 带圈圈的数字1~50,求50以上,不要word的
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿
- vue 手动挂载$mount() 获取 $el
手动挂载$mount() 如果没有挂载的话,没有关联的 DOM 元素.是获取不到$el的. https://vuejs.org/v2/api/#vm-mount var MyComponent = V ...