MySQL学习笔记-数据库文件
MySQL主要文件类型有如下几种
参数文件:my.cnf——MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类型以及定义作用域;
日志文件:记录MySQL对某种条件做出响应时候写入的文件,包括错误日志、查询日志、慢查询日志、二进制日志;
Mysql表结构文件:存放MySQL表结构定义文件,不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件;
Socket文件:当用linux的MySQL命令行窗口登录的时候需要的文件;
Pid文件:MySQL实例的进程ID文件;
存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。
参数文件
当MySQL实例启动时,MySQL会读取一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等设置。默认情况下,MySQL实例会按照一定的次序去取,可以通过命令行,查看my.cnf文件的位置;
mysql --help | grep my.cnf
Mysql在启动时可以不需要参数文件,但是如果在默认的数据库目录下找不到mysql架构,则启动会失败;
Mysql的参数可以通过“show variables”来查看,由于从mysql5.1版本开始,可以通过information_schema架构下的GLOBAL_VARIABLES视图来进行查找,所以也可以这样查看
- select * from information_schema.global_variables;
- 错误日志
show variables like 'log_error';
- 慢查询日志
show variables like 'long_query_time';
show variables like 'log_slow_queries';
set global slow_query_log=off;
show variables like 'log_queries_not_using_indexes';
show variables like 'log_output';
- 查询日志
show variables like 'general_log%';
set @@global.general_log=1;
- 二进制日志
show variables like 'datadir';
show variables like 'socket' \G;
show variables like 'pid_file' \G;
对于InnoDB存储引擎而言重做日志至关重要,详细原理机制在cache 与buffer中已经讲解,在此不再赘述。
show variables like 'innodb%log%'\G;
undo日志
存在于共享表空间ibdata1里面,有一个回滚段地址,里面存放了头信息,配置头信息,段的头信息,里面存储了与redo相反的数据更新操作,如果rollback的话,就把undo段里面数据回写到数据文件里面。
Redo与undo他们并不是各自独立没有关系的,他们是有关联的,交替合作来保证数据的一致性和安全性。
与redo不同的是,redo存放在重做日志文件中,undo存放在数据库内部的一个特殊段(segment)中,这称为undo段(undo segment),undo段位于共享表空间内。如果用了独立表空间的话,则直接存储到表私自的空间中,而不存储到共享表空间中。在innodb存储引擎中,undo log用来完成事务的回滚以及MVCC的功能。
MySQL是插件式存储引擎的体系结构,对于数据的存储是按照表划分,每张表都会有与之对应的文件。不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义。
太重要,太有份量了,暂时搁置吧。下次抽空补上,这里需要看很多文章才能写好。
浮生潦草闲愁广,一听啤酒一口尽