文件

日志

错误日志

对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数据库执行更改的所有操作。作用于一下:

  1. 恢复,某些数据恢复需要binary log
  2. 复制,主从结构数据同步需要
  3. 审计,判断是否存在注入攻击

表结构定义文件

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中表根据主键顺序存放,如果表中无主键则根据一下顺序选择:

  1. 取非空唯一索引作为主键,多个则按照索引声明顺序选择。
  2. 自动创建一个6字节的指针

InnoDB逻辑存储结构

由大到小:表空间、段、区、页。

segment 段

  • 主要有数据段、索引段、回滚短等。
  • 数据段即B+树中叶子节点,索引段即非叶子节点。

extent 区

  • 不管页的大小,每个区的大小固定1MB。
  • 每个段开始时,先用32个页大小的碎片页存放数据,只有当这些页用完了才会申请分配一个区的磁盘。

page 页

  • 默认大小为16KB,innodb_page_size可以修改其页大小。
  • 主要类型:数据页、undo页、系统页、事物数据页、插入缓冲位图页、插入缓冲空闲列表页、未压缩的二进制大对象页和压缩的二进制大对象页

页结构

  1. File Header:记录页的一些头信息
  2. Page Header:记录数据页的状态信息
  3. Infimum和Supremum Record:为两个虚拟的行记录,前者记录该页最小还小的值,后者则记录最大还大的值
  4. User Record:实际存储行记录的内容
  5. Free Record:空闲空间
  6. Page Directory:记录在页中的相对位置,也称Slots(槽)或目录槽
  7. File Trailer:用来检测页是否已经完整写入磁盘,记录checksum值等。

分区表

分区的过程是将一个表或索引分解为多个更小的部分。Mysql只支持水平分区(按照行记录分配到不同物理文件),主要有一下几种:

  1. range分区:基于属于一个给定的连续区间的列值放入分区。
  2. list分区:list分区面向的是离散的值。
  3. hash分区:分局自定义表达式的返回值进行分区
  4. key分区:mysql提供的哈希函数进行分区

用分区表要慎重!!!

《Mysql技术内幕,Innodb存储引擎》——文件、表的更多相关文章

  1. (转)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% ...

  2. MySQL技术内幕InnoDB存储引擎(表&索引算法和锁)

    表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...

  3. 《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记

    一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...

  4. Mysql技术内幕——InnoDB存储引擎

    Mysql技术内幕——InnoDB存储引擎 http://jingyan.baidu.com/article/fedf07377c493f35ac89770c.html 一.mysql体系结构和存储引 ...

  5. mysql技术内幕InnoDB存储引擎-阅读笔记

    mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...

  6. 【Mysql技术内幕InnoDB存储引擎】读书笔记

    一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免 ...

  7. MySQL技术内幕InnoDB存储引擎(三)——文件相关

    构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件 ...

  8. 《MySQL技术内幕 InnoDB存储引擎 》学习笔记

    第1章  MySQL体系结构和存储引擎 1.3 MySQL存储引擎 数据库和文件系统最大的区别在于:数据库是支持事务的 InnoDB存储引擎: MySQL5.5.8之后默认的存储引擎,主要面向OLTP ...

  9. MySQL技术内幕InnoDB存储引擎(二)——InnoDB存储引擎

    1.概述 是一个高性能.高可用.高扩展的存储引擎. 2.InnoDB体系架构 InnoDB存储引擎主要由内存池和后台线程构成. 其中,内存池由许多个内存块组成,作用如下: 维护所有进程和线程需要访问的 ...

  10. (转)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 ...

随机推荐

  1. 基于SketchUp和Unity3D的虚拟场景漫游和场景互动

    这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网 ...

  2. Hibernate中OpenSessionInViewFilter(通常配置在web.xml文件中)的作用

    Spring为我们解决Hibernate的Session的关闭与开启问题. Hibernate 允许对关联对象.属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Sessio ...

  3. java web开发过程中的“\”指的是什么,如何区分

  4. java socket编程(也是学习多线程的例子)详细版----转

    7.2 面向套接字编程    我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式 7.2.1使用套接字实现基于TCP协议的服务器和客户机程序  ...

  5. Android-fragment的替换-V4支持包

    昨天写的这几篇博客,Android-fragment简介-fragment的简单使用,Activity-fragment-ListView展示,Android-fragment生命周期,Android ...

  6. CSS 温故而知新

    如何让文字垂直居中 需要设置div的height,line-height 为一样的值,如下所示: <div class="ui-bar ui-bar-e" style=&qu ...

  7. 显式等待-----Selenium快速入门(十)

    上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待.显式等待,其实就是在使用WebDriverWait这个对象,进行等待.显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等 ...

  8. js form 表单 重置 清空

    清空 和 重置的差异是 清空是彻底清空input内容即便初始值value有值,重置是将input内容重置为value初始状态 很简单记录下 方便之后使用 //重置 //document.getElem ...

  9. .Net常用正则判断方法

    /// <summary> /// 判断string类型否为数字 /// </summary> /// <param name="strNumber" ...

  10. Day 7 深copy和浅Copy

    dict.fromkeys的用法 1 2 3 4 5 6 7 8 9 10 11 #dict.fromkeys的用法 #例子1 dic = dict.fromkeys([1,2,3],[]) prin ...