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存储 ...
 
随机推荐
- pip安装mysql报错  ld: library not found for -lssl
			
ld: library not found for -lssl clang: error: linker command failed with exit code (use -v to see in ...
 - 帮朋友转发招聘信息 南京知名互联网公司招聘java、测试、前端,具体私聊
			
一.java开发 1.5年及以上J2EE方向开发经验 2.精通spring等开源框架 3.熟悉html.javascript.css.jsp/freemarker.jquery的使用 4.熟悉使用my ...
 - iOS 简单引导界面
			
代码地址如下:http://www.demodashi.com/demo/11607.html 前言 现在很多APP在用户第一次用的时候,由于用户可能并不知道其中一些功能点的时候,这个时候就需要我们来 ...
 - 破解 zip 压缩包程序
			
目录 项目文件结构 代码实现过程 演示效果 代码地址如下:http://www.demodashi.com/demo/12021.html 项目文件结构 在当前目录有三个文件: 3-zipCrack. ...
 - linux入门基础——linux网络配置
			
linux网络配置 以太网连接 在linux中,以太网接口被命名为:eth0.eth1等.0.1代表网卡编号 通过lspci命令能够查看网卡硬件信息(假设是usb网卡,则须要使用lsusb命令) 命令 ...
 - html&css基础框架
			
原文地址:http://www.w3cplus.com/framework/index.php
 - Spark调研笔记第6篇 - Spark编程实战FAQ
			
本文主要记录我使用Spark以来遇到的一些典型问题及其解决的方法,希望对遇到相同问题的同学们有所帮助. 1. Spark环境或配置相关 Q: Sparkclient配置文件spark-defaults ...
 - DNS的概念,用途,DNS查询的实现算法
			
1.DNS的概念,用途 DNS是由解析器以及域名服务器组成的. 域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器. DNS ...
 - Subversion和TortoiseSVN安装与配置(转)
			
Subversion为版本控制软件的服务器端. TortoiseSVN为版本控制软件的客户端. 1.下载Subversion与TortoiseSVN. Subversion的地址:http://sub ...
 - Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
			
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...