查看内容

mysql物理文件组成

  • 2019-12-12 14:15
  • 新浦京计算机网络
  • Views

mysql物理文件组成

MySQL几种文件的用法

 

 

1.1日志文件

日志文件

  1)错误日志:Error Log

日志文件默认位于data目录下

记录了MyQL Server 运行过程中所有较为严重的警告和错误信息,以及

long_query_time=2

 

log-slow-queries= 

MySQLServer 每次启动和关闭的详细信息。在默认情况下,系统记录错误日志的

log-error=

 

log= C:log.log

功能是关闭的.  www.2cto.com  

log-bin= 

  2)二进制日志:Binary Log & Binary Log Index

 

     name]”打开了记录的功能之后,MySQL 会将所有修改数据

mysql-bin.index 文件(binary log index)的功能是记录所有Binary Log 的绝对路径,保证MySQL 各种线程能够顺利的根据它找到所有需要的Binary Log 文件。

库数据的query 以二进制形式记录到日志文件中。当然,日志中并不仅限于query

  www.2cto.com  

 

数据文件

语句这么简单,还包括每一条query 所执行的时间,所消耗的资源,以及相关的事务信息

1、“.frm”文件

 

与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。

,所以binlog是事务安全的。  

2、“.MYD”文件

  3)更新日志:update log

“.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每一个MyISAM 表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

  4)查询日志:query log

3、“.MYI”文件

  5)慢查询日志:slow query log

“.MYI”文件也是专属于MyISAM 存储引擎的,主要存放MyISAM 表的索引相关信息。对于MyISAM 存储来说,可以被cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。  

  6)Innodb 的在线redo 日志:innodb redo log

4、“.ibd”文件和ibdata 文件

     Innodb 是一个事务安全的存储引擎,其事务安全性主要就是通过在线redo

这两种文件都是存放Innodb 数据的文件,之所以有两种文件来存放Innodb 的数据(包括索引),是因为Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和MyISAM 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。ibdata 文件可以通过innodb_data_home_dir 和innodb_data_file_path两个参数共同配置组成, innodb_data_home_dir 配置数据存放的总目录, 而innodb_data_file_path 配置每一个文件的名称。当然, 也可以不配置  www.2cto.com    

 

innodb_data_home_dir 而直接在innodb_data_file_path 参数配置的时候使用绝对路径来完成配置。innodb_data_file_path 中可以一次配置多个ibdata 文件。文件可以是指定大小,也可以是自动扩展的,但是Innodb 限制了仅仅只有最后一个ibdata 文件能够配置成自动扩展类型。当我们需要添加新的ibdata 文件的时候,只能添加在innodb_data_file_path配置的最后,而且必须重启MySQL 才能完成ibdata 的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。我个人还是更倾向于使用独享表空间存储方式。

日志和记录在表空间中的undo 信息来保证的。redo 日志中记录了Innodb 所做的

切换数据库使用的引擎

 

CREATE TABLE 表名

所有物理变更和事务信息,通过redo 日志和undo 信息,Innodb 保证了在任何情

(

 

 字段……

况下的事务安全性。

 ) ENGINE=InnoDB

 

 

2.2数据文件

如果还不行,就直接到MySQL目录里的my.ini文件中把default-storage-engine这一行改过来,把默认的存储引擎改为InnoDB,重启数据库服务器就行了。

上一篇:MySQL分区表的使用 下一篇:没有了