MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
MySQL体系结构和存储引擎
定义数据库和实例
- 数据库:物理操作系统文件或者其他形式文件类型的结合。在MYSQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放在内存之中的文件,但是定义仍然不变。
 - 实例:MYSQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。
 
 MYSQL被设计为一个单进程多线程架构的数据库。
# 可以查看当MYSQL数据库实例启动时,会在哪些位置查找配置文件。
mysql --help | grep my.cnf
	在配置文件中有一个参数是datadir,改参数指定了数据库所在的路径。在LINUX操作系统下默认是/user/local/mysql/data,这个默认路径只是一个链接,实际指向/opt/mysql_data。所以用户必须保证/opt/mysql_data的用户和权限
MYSQL体系结构

 MYSQL由一下几部分组成:
- 连接池组件
 - 管理服务和工具组件
 - SQL接口组件
 - 查询分析器组件
 - 优化器组件
 - 缓冲组件
 - 插件式储存引擎
 - 物理文件
 
需要特别注意的是:存储引擎是基于表的,而不是数据库。
MYSQL存储引擎
 存储引擎是MYSQL区别与其他数据库的一个最重要特性。用户可以根据MYSQL预定的存储引擎接口编写自己的存储引擎。若用户对某一种存储引擎的性能或功能不满意。可以通过修改源码来得到想要的特性,这就是开源带给我们的方便与力量。
InnoDB存储引擎
- 支持事务:主要面向在线事务处理(OLTP)应用。特点是
- 行锁设计
 - 支持外键
 - 支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。
 
 - 数据放在一个逻辑的表空间,这个表空间像黑盒一样由INNODB存储引擎自身进行管理。它可以将每个INNODB存储引擎的表单独存放到一个独立的ibd文件中。
 - 通过使用多版本并发控制(MVCC)来获得高并发性
 - 实现了SQL标准的四种隔离级别。默认为REPEATABLE级别。使用一种被称为next-keylocking的策略来避免幻读现象的产生。
 - 提供插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用功能。
 - 表中数据采用聚集的方式存放,因此每场表的储存都是按主键的顺序进行存放,如果没有显式指定主键,则会为每一行生成一个6字节的ROWID,并作为主键。
 
MyISAM存储引擎
- 不支持事务,支持全文索引,主要面向一些OLAP数据库应用。
 - 缓冲池只缓冲索引文件,不缓冲数据文件。
 - MYD用来存放数据文件,MYI用来存放索引文件。
 
NDB存储引擎
- 集群架构:share nothing
 - 数据全部放在内存中,因此主键查找的速度极快,并且通过添加NDB数据存储节点可以线性地提高数据库性能,是高可用、高性能的集群系统。
 - NDB存储引擎的连接操作是在MYSQL数据库层完成的,而是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销
 
Memory存储引擎
- 数据都存放在内存中,非常适合用于存储临时数据的临时表,以及数据仓库中的维度表。
 - 默认使用哈希索引
 - 只支持表锁,并发性能较差,不支持TEXT和BLOB列类型
 - 存储变长字段(varchar)时按照定常字段(char)的方式进行的,会浪费内存。
 
Archive存储引擎
- 只支持INSERT和SELECT操作
 - 支持索引
 - 使用zlib算法将数据行进行压缩后存储,压缩比一般达1:10
 - 适合存储归档数据,例如日志信息等。
 - 使用行锁实现高并发的插入操作
 - 不支持事务
 
FEDERATED存储引擎
- 不存放数据,只是指向一台远程MYSQL数据库服务器上的表。这非常类似于SQL SERVER的联结服务器和Oracle的透明网关
 - 不支持异构
 
Maria存储引擎
- 支持魂村数据和索引文件
 - 行锁设计,提供了MVCC功能
 - 支持事务和非事务安全的选项
 - 更好的BLOB字符类型的处理性能。
 
# 查看数据库锁支持的存储引擎
SHOW ENGINES\G
												
											MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎的更多相关文章
- MySQL技术内幕读书笔记(二)——InnoDB存储引擎
		
目录 InnoDB存储引擎 InnoDB存储架构 Checkpoint技术 Master Thread 工作方式 InnoDB关键特性(放一下,感觉看后面,再看总结吧) InnoDB存储引擎 Inno ...
 - MySQL技术内幕读书笔记(八)——事务
		
事务的实现  事务隔离性由锁来实现.原子性.一致性.持久性通过数据库的redo log和undo log来完成.redo log称为重做日志,用来保证事务的原子性和持久性.undo log用来保证事 ...
 - MySQL技术内幕读书笔记(七)——锁
		
锁  锁是数据库系统区分与文件系统的一个关键特性.为了保证数据一致性,必须有锁的介入.数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性. lock与latch  使用命令 ...
 - MySQL技术内幕读书笔记(五)——索引与算法
		
索引与算法 INNODB存储引擎索引概述  INNODB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引  InnoDB存储引擎支持的哈希索引是自适应的.会根据表的情况自动添加  ...
 - MySQL技术内幕读书笔记(四)——表
		
目录 表 索引组织表 InnoDB逻辑存储结构 INNODB行记录格式 INNODB数据页结构 约束 视图 分区表 表  表就是关于特定实体的数据集合,是关系型数据库模型的核心. 索引组织表  在 ...
 - MySQL技术内幕读书笔记(三)——文件
		
目录 文件 参数文件 日志文件 套接字文件 pid文件 表结构定义文件 INNODB存储引擎文件 文件  有以下类型文件 参数文件:告诉MYSQL实例启动时在哪里找到数据库文件,并且制定某些初始化参 ...
 - MySQL技术内幕读书笔记(六)——索引与算法之全文索引
		
全文索引 概述  通过索引字段的前缀进行查找,B+树索引是支持的,利用B+树索引就可以进行快速查询. SELECT * FROM blog WHERE content like 'xxx%';  ...
 - Struts2技术内幕 读书笔记一 框架的本质
		
本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...
 - Struts2技术内幕 读书笔记三 表示层的困惑
		
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
 
随机推荐
- Codeforces 208A-Dubstep(字符串)
			
Vasya works as a DJ in the best Berland nightclub, and he often uses dubstep music in his performanc ...
 - SpringMVC之搭建框
			
1. 创建Web工程 2. 修改环境配置 2.1 背景:因为创建的web工程,classe文件默认保存在build/classes里,而WEB-INF下的文件无法通过外部访问,更加安全,所以修改cla ...
 - 上海市2019年公务员录用考试笔试合格人员笔试成绩(A类)
			
考试类别:A类 注册编号 总成绩 注册编号 总成绩 注册编号 总成绩 注册编号 总成绩 4016574 127.4 5112479 145.9 5125732 124.3 5141074 159.9 ...
 - EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型
			
官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新 ...
 - jmeter使用Beanshell预处理器从指定列表中获取随机值
			
变量mynation从列表{"china", "US", "UK"}中随机取值 String[] nation = new String[] ...
 - CODEVS 1074 食物链  2001年NOI全国竞赛(洛谷 P2024)
			
题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并 ...
 - 2017-9-24-Linux移植:ubuntu server 16.04无法联网&无法apt-get update解决
			
无法上网!!!不能忍.. 现象:ifconfig 毛都没有,想找一下ip都找不到. ifconfig –a 可以列出所有网卡设备,确认VM VirtualBox网卡开对了,已经给到了虚拟机. 编辑/e ...
 - 树形动态规划(树状DP)小结
			
树状动态规划定义 之所以这样命名树规,是因为树形DP的这一特殊性:没有环,dfs是不会重复,而且具有明显而又严格的层数关系.利用这一特性,我们可以很清晰地根据题目写出一个在树(型结构)上的记忆化搜索的 ...
 - ZOJ3967 : Card Game
			
比赛的时候因为卡内存,在抠内存的时候改错了,导致赛内没有AC,赛后发现数组开的很小都可以AC. 分析题意我们发现,这题需要求出所有存在的直线形成的上凸壳,那么查询$[L,R]$时在凸壳上二分导数,找到 ...
 - BZOJ4223 : Tourists
			
将位置划分成$O(m)$段区间,每段最早被阻挡的时间可以用堆维护. 那么每段区间对询问的贡献独立,扫描线处理即可. 时间复杂度$O(m\log m)$. #include<cstdio> ...