《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 ...
随机推荐
- (回文串 )Best Reward -- hdu -- 3613
http://acm.hdu.edu.cn/showproblem.php?pid=3613 Best Reward Time Limit: 2000/1000 MS (Java/Others) ...
- Android:手把手教你打造可缩放移动的ImageView(上)
定义ImageView,实现功能如下: 1.初始化时图片垂直居中显示,拉伸图片宽度至ImageView宽度. 2.使用两根手指放大缩小图片,可设置最大放大倍数,当图片小于ImageView宽度时,在手 ...
- shell中的重定向(输入输出)
注意:不同版本的Linux会有所区别,不过大同小异 Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设 ...
- SQL Server 索引基本概念与优化
数据页和区 页 SQL Server 中的数据以“页”(Page)的形式保存数据,页是SQL Server 的IO单位,读/写一次至少是一页.一页为8K(8192byte). 页由三部分组成,页头,数 ...
- Linux SNAT/DNAT简单理解与案例分析。
在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防 ...
- 新建/初始化git项目
Command line instructions Git global setup git config --global user.name "你的名字" git config ...
- Asp.net MVC4 记录在线用户数及登录时长
Global.asax.cs文件 public class MvcApplication : System.Web.HttpApplication { /// <summary> /// ...
- rabbitMQ的简单实例——amqp协议带数据回写机制
rabbitMQ是一种高性能的消息队列,支持或者说它实现了AMQP协议(advanced message queue protocol高级消息队列协议). 下面简单讲一讲一个小例子.我们首先要部署好r ...
- s11 day Linux 和nginx 部署
https://www.cnblogs.com/pyyu/p/9481344.html ,开机初始化的配置 iptables -F 清空防火墙 /etc/init.d/iptables stop ...
- Python(多进程multiprocessing模块)
day31 http://www.cnblogs.com/yuanchenqi/articles/5745958.html 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分 ...