《Mysql技术内幕,Innodb存储引擎》——文件、表
文件
日志
错误日志
对Mysql启动、运行和关闭过程进行记录,通过SHOW VARIABLES LIKE 'log_error'查看日志文件位置。
慢查询日志
- Mysql启动时设置一个阈值,运行时间超过的所有SQL语句将记录到该日志。
long_query_time设置时间阈值,log_queries_not_using_indexes如果运行的SQL没使用索引则也记录慢查询日志,log_throttle_queries_not_using_indexes表示每分钟允许记录到日志的SQL语句次数。
二进制日志
binary log记录对Mysql数据库执行更改的所有操作。作用于一下:
- 恢复,某些数据恢复需要binary log
- 复制,主从结构数据同步需要
- 审计,判断是否存在注入攻击
表结构定义文件
Mysql是插件式存储引擎的体系结构,数据的存储是根据表进行的,因此每个表都会有对应的文件。其文件以frm后缀名。
InnoDB存储引擎文件
表空间
innodb将数据存储在表空间,默认会创建一个10MB的ibdata1的文件作为表空间。innodb_data_file_path设置文件,可同时设置多个并设置大小。innodb_file_per_table设置了则使每张表产生一个独立的表空间。
如果启用了innodb_file_per_table,每张表的表空间只是数据、索引和插入缓冲Bitmap页,其他类数据还是在共享表空间内。
redo log
- 每个Innodb至少有1个redo log组,每个组下至少有2个redo log (默认为ib_logfile0和ib_logfile1)。
- 日志组中每个日志文件大小一样,并循环写入。
表
索引组织表
Innodb中表根据主键顺序存放,如果表中无主键则根据一下顺序选择:
- 取非空唯一索引作为主键,多个则按照索引声明顺序选择。
- 自动创建一个6字节的指针
InnoDB逻辑存储结构
由大到小:表空间、段、区、页。
segment 段
- 主要有数据段、索引段、回滚短等。
- 数据段即B+树中叶子节点,索引段即非叶子节点。
extent 区
- 不管页的大小,每个区的大小固定1MB。
- 每个段开始时,先用32个页大小的碎片页存放数据,只有当这些页用完了才会申请分配一个区的磁盘。
page 页
- 默认大小为16KB,
innodb_page_size可以修改其页大小。 - 主要类型:数据页、undo页、系统页、事物数据页、插入缓冲位图页、插入缓冲空闲列表页、未压缩的二进制大对象页和压缩的二进制大对象页
页结构
- File Header:记录页的一些头信息
- Page Header:记录数据页的状态信息
- Infimum和Supremum Record:为两个虚拟的行记录,前者记录该页最小还小的值,后者则记录最大还大的值
- User Record:实际存储行记录的内容
- Free Record:空闲空间
- Page Directory:记录在页中的相对位置,也称Slots(槽)或目录槽
- File Trailer:用来检测页是否已经完整写入磁盘,记录checksum值等。
分区表
分区的过程是将一个表或索引分解为多个更小的部分。Mysql只支持水平分区(按照行记录分配到不同物理文件),主要有一下几种:
- range分区:基于属于一个给定的连续区间的列值放入分区。
- list分区:list分区面向的是离散的值。
- hash分区:分局自定义表达式的返回值进行分区
- key分区:mysql提供的哈希函数进行分区
用分区表要慎重!!!
《Mysql技术内幕,Innodb存储引擎》——文件、表的更多相关文章
- (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...
- MySQL技术内幕InnoDB存储引擎(表&索引算法和锁)
表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...
- 《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记
一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...
- Mysql技术内幕——InnoDB存储引擎
Mysql技术内幕——InnoDB存储引擎 http://jingyan.baidu.com/article/fedf07377c493f35ac89770c.html 一.mysql体系结构和存储引 ...
- mysql技术内幕InnoDB存储引擎-阅读笔记
mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...
- 【Mysql技术内幕InnoDB存储引擎】读书笔记
一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免 ...
- MySQL技术内幕InnoDB存储引擎(三)——文件相关
构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件 ...
- 《MySQL技术内幕 InnoDB存储引擎 》学习笔记
第1章 MySQL体系结构和存储引擎 1.3 MySQL存储引擎 数据库和文件系统最大的区别在于:数据库是支持事务的 InnoDB存储引擎: MySQL5.5.8之后默认的存储引擎,主要面向OLTP ...
- MySQL技术内幕InnoDB存储引擎(二)——InnoDB存储引擎
1.概述 是一个高性能.高可用.高扩展的存储引擎. 2.InnoDB体系架构 InnoDB存储引擎主要由内存池和后台线程构成. 其中,内存池由许多个内存块组成,作用如下: 维护所有进程和线程需要访问的 ...
- (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优
事务 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC ...
随机推荐
- nodejs中如何使用mysql数据库[node-mysql翻译]
nodejs中如何使用mysql数据库 db-mysql因为node-waf: not found已经不能使用,可以使用mysql代替. 本文主要是[node-mysql]: https://www. ...
- STL中list中push_back(对象)保存对象的内部实现
STL中list中push_back(对象)保存对象的内部实现 1. 在容器中,存放的是对象拷贝 #include<iostream> #include<list> using ...
- Win7_Ultimate + VS2010 + openGL_MFC单文档应用开发框架搭建步骤
Win7_Ultimate + VS2010 + openGL单文档应用开发框架搭建步骤 上一个配置是基于OpenGL的开发工具配置的,下面就是基于Vs2010的MFC单文档应用开发. 通过网上查找资 ...
- Americans are usually tolerant (Listen speak of Unit 2)
Americans are usually 1) tolerant of non-native speakers who have some 2) trouble understanding Engl ...
- SED 学习笔记
1. Sed简介 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成 ...
- 基于jTopo的拓扑图设计工具库ujtopo
绘制拓扑图有很多开源的工具,知乎上也有人回答了这个问题: https://www.zhihu.com/question/41026400/answer/118726253 ujtopo是基于jTopo ...
- 使用vs code开发纸壳CMS并启用Razor智能提示
关于纸壳CMS 纸壳CMS是一个开源免费的,可视化设计,在线编辑的内容管理系统.基于ASP .Net Core开发,插件式设计: 下载代码 GitHub:https://github.com/Seri ...
- sqlserver学习
清空数据表: delete from TableName 清除表中的所有的数据,保留表的结构 truncate table TableName 清除表中所有行,保留表结构 (重置ID) 删除表 Dr ...
- 编程哲学之C#篇:01——创世纪
我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...
- 873. Length of Longest Fibonacci Subsequence
A sequence X_1, X_2, ..., X_n is fibonacci-like if: n >= 3 X_i + X_{i+1} = X_{i+2} for all i + 2 ...