zoukankan      html  css  js  c++  java
  • InnoDB存储引擎文件

    InnoDB存储引擎文件

    MySQL数据库包括数据库本身的文件和存储引擎文件。数据库自身的文件由参数文件(my.cnf)、错误日志文件、慢查询日志文件、查询日志文件、二进制日志文件、套接字文件、pid文件、表结构定义文件(tabname.frm)

    和InnoDB存储引擎相关的文件有表空间文件和重做日志文件。

    一、表空间文件

    InnoDB引擎将存储的数据按照表空间进行存放的设计。在默认配置下有一个初始大小10M,名为ibdata1的文件。该文件就是默认的表空间文件,可以通过innodb_data_file_path参数配置,格式如下:

    innodb_data_file_path = datafile1_spec1 [;datafile2_spec2]...

    用户通过多个文件组成表空间,同时制定文件的属性,如:

    innodb_data_file_path = /db/ibdata1:2000M;/dr/ibdata2:2000M:autoextend

    这里时两个文件组成的表空间,若两个文件位于不同的磁盘,磁盘的负载可能被平均。可以提高数据库的整体性能,设置了innodb_data_file_path参数,所有InnoDB引擎表数据都会记录到该共享表空间中。

    如果设置了innodb_file_per_table,则每个InnoDB表产生一个独立的表空间。命名规则 表名.ibd,不再将所有数据存放在默认的表空间。这些单独的表空间仅存储表的数据,索引,插入缓冲BITMAP等信息,其余信息仍然存在默认表空间。如图是InnoDB对于文件的存储方式:

     二、重做日志文件

    默认情况下,在InnoDB引擎的数据目录下有两个ib_logfile0和ib_logfile1的文件。这两个就是重做日志文件。当实例或介质失败时,重做日志就派上用场。例如,主机断电,数据库根据重做日志恢复到断电前的时刻。

    每个InnoDB引擎至少有一个重做日志文件组,每个文件组至少两个重做日志文件。为了提高更高的可靠性,用户可以设置多个镜像日志组。将不同的文件组放在不同的磁盘上,提高日志的高可用性。在日志组中每个重做日志的大小一致。以循环的方式写入。InnoDB先写重做日志1,当达到文件最后,切换到重做日志2,日志2满了之后再切换到日志1。影响重做日志属性的参数有:

    (1)、innodb_log_file_size 每个重做日志的大小

    (2)、innodb_log_files_in_group 重做文件日志组中日志文件的数量,默认为2。

    (3)、innodb_mirrored_log_groups 日志镜像文件组的数量,默认1。表示只有一个日志文件组,没有镜像。

    (4)、innodb_log_group_home_dir 日志文件组所在路径,默认./ 表示在MySQL的数据目录下。

    重做日志对系统性能影响很大,如果太大恢复需要很久。设置太小,否则一个事务的日志需要多次切换重做日志文件。重做日志太小,会频繁的触发检查点

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/jkin/p/10284395.html
Copyright © 2011-2022 走看看