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

    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提供的哈希函数进行分区

    用分区表要慎重!!!

  • 相关阅读:
    VC++SDK编程——字体及位置示例
    VC2008以资源形式实现多语言版本(非Unicode) .转
    跟着编程之美学算法——最长递增子序列(转)
    跟着编程之美学算法——最长公共子序列
    MFC的多国语言界面的实现
    随意输入N个英文字符,找出其中最长连续的排列。
    C++读写EXCEL文件方式比较 .
    操作EXCEL和符号分隔文本的类CSpreadSheet .
    每个程序员都必读的12篇文章
    VC项目配置详解
  • 原文地址:https://www.cnblogs.com/suolu/p/6596724.html
Copyright © 2020-2023  润新知