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存储 ...
随机推荐
- Python连接MySQL乱码(中文变问号)
#coding=utf-8 import MySQLdb db = MySQLdb.connect("IP","用户名","密码",&quo ...
- selenium以手机模拟器方式打开Google浏览器
使用chrome driver和chrome浏览器并进入chrome的 toggle device mode 模式,就可以很好的模拟手机端,下面直接上代码 public class runtest { ...
- autoconfig.xml与antx.properties一级application.properties之间的关系
Java web项目中一般都有配置文件,文件中包含一些配置信息供Java工程启动和运行时使用,这些常见的配置文件大都是一些以.properties后缀的文件,比如常见的antx.properties以 ...
- C++11 新特性之 变长參数模板
template <typename ... ARGS> void fun(ARGS ... args) 首先明白几个概念 1,模板參数包(template parameter pack) ...
- lucene 索引中文档的属性建立与不建立带来的影响总结
索引中文档的属性建立与不建立带来的影响总结 1.依据文档的某属性去查找索引的话,只会返回带有此属性(如果你对当前属性设定了条件,那么需要满足当前条件)的所有文档,没有建立此属性的文档是不会在返回结 ...
- HTML5事件-pageshow 和 pagehide
<!doctype html> <html> <head> <title>html5事件</title> <meta charset= ...
- js知识地图--js大脑图beta01版正式发布
原文地址 http://zhangyaochun.iteye.com/blog/1682605 原作者:zhangyaochun
- AngularJs学习笔记(1)——ng-app
众所周知: ng-app 指令用于告诉 AngularJS 应用当前这个元素是根元素.所有 AngularJS 应用都必须要要一个根元素. 只有被具有ng-app属性的DOM元素包含的元素才会受ang ...
- C++设计模式之代理模式
IPhone 6已经在中国香港开售了,圆了在专卖店等候一个多月苹果粉丝的苹果梦.然而对中国大陆而言.须要到9月17日苹果才在大陆开售.这对中国大陆的粉丝而言,不亚于一种煎熬,因此而滋生一种代购 ...
- go项目布局(摘录)
go的项目结构布局 或 包结构布局 这一块大家似乎还在摸索吧, 常用的应该还是类似于java的mvc布局, 但网上也有不同的布局方式,查阅github上的一些源码,也有大量的采用. 我把自己碰到的资料 ...