zoukankan      html  css  js  c++  java
  • MySQL学习笔记-数据库文件

    数据库文件

    MySQL主要文件类型有如下几种


    参数文件:my.cnf——MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类型以及定义作用域;

    日志文件:记录MySQL对某种条件做出响应时候写入的文件,包括错误日志、查询日志、慢查询日志、二进制日志;

    Mysql表结构文件:存放MySQL表结构定义文件,不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件;

    Socket文件:当用linux的MySQL命令行窗口登录的时候需要的文件;

    Pid文件:MySQL实例的进程ID文件;

    存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。


    参数文件


    当MySQL实例启动时,MySQL会读取一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等设置。默认情况下,MySQL实例会按照一定的次序去取,可以通过命令行,查看my.cnf文件的位置;

    1. mysql --help | grep my.cnf


    Mysql在启动时可以不需要参数文件,但是如果在默认的数据库目录下找不到mysql架构,则启动会失败;

    Mysql的参数可以通过“show variables”来查看,由于从mysql5.1版本开始,可以通过information_schema架构下的GLOBAL_VARIABLES视图来进行查找,所以也可以这样查看

    1. select * from information_schema.global_variables

    Mysql 的参数类型:
    分为动态(dynamic)和静态参数(static)。

    动态参数意味着可以再mysql实例运行中进行更改,有些参数修改可以是基于会话的也可以是基于整个实例的生命周期

    静态参数说明在整个实例声明周期内都不得进行更改,就好像是只读(read only)的。。Mysql5.1的动态参数在这里。


    日志文件

    MySQL数据库中常见的日志文件有错误日志、二进制日志、慢查询日志。这些日志为数据库优化、问题查找带来了便利。一般来说日志文件的存放路径结构如下:


    • 错误日志
    该文件对Mysql的启动、运行、关闭过程进行了记录。在遇到问题时,首先应该查看此文件,可以通过命令来定位该文件。 
    1. show variables like 'log_error';

    • 慢查询日志
    该文件记录了所有运行时间超过阀值的SQL语句,该阀值可以通过参数long_query_time来设置。默认值为10秒。
    需要注意的两点内容:
    首先,慢查询日志记录的是大于阀值的SQL语句,而不是大于等于!!!
    其次,从Mysql 5.1开始,long_quey_time开始以微秒记录sql语句运行时间。
    1. show variables like 'long_query_time';

     

    但是在默认情况下,Mysql并不启动满查询日志,需要手工修改这个参数;
    1. show variables like 'log_slow_queries';

     

    设置开启慢日志命令;
    1. set global slow_query_log=off;

    另一个和慢查询相关的参数是log_queries_not_using_index,如果运行的SQL语句没有使用索引,则Mysql则同样会将这条SQL语句记录到慢查询日志文件中;
    1. show variables like 'log_queries_not_using_indexes';

     


    在慢查询日志文件逐渐增大时,可考虑使用工具mysqldumpslow工具帮助我们分析。该工具的使用您可以使用 “man mysqldumpslow” 或者去这里了解。Mysql5.1开始可以将慢查询的日志记录放入一张表中,该表在mysql.slow_log表中。是否放在表中由参数‘log_output’来决定;

    参数log_output指定了慢查询输出的格式,默认为FILE,也可以将其设置为TABLE,就可以去Mysql.slow_log中去查询了。 
    1. show variables like 'log_output';



    同样也可以将查询日志的记录放入mysql架构下的general_log表。
    • 查询日志
    查询日志记录了所有对Mysql数据库请求的信息,不论这些请求是否得到了正确的执行。默认文件名为:主机名.log。我们查看一个查询日志
    1. show variables like 'general_log%';



    设置变量general_log以开启通用查询日志
    1. set @@global.general_log=1;

    • 二进制日志
    二进制日志记录了对数据库执行更改的所有操作。二进制日志主要有以下两种作用:
    恢复(recovery):某些数据库的恢复需要二进制日志,如当一个数据库全被文件恢复后,我们可以通过二进制日志进行point-in-time的恢复;
    复制(replication):通过复制和执行二进制日志使得一台远程的MySQL数据库(一般称为slave或者standby)与一台MySQL数据库(一般称为master或者primary)进行实时同步。
    可以通过以下命令查看地址信息:
    1. show variables like 'datadir';

    注:二进制日志是一个比较复杂,并且DBA会常常用到的日志。在此不是学习重点,所以只是简要描述。

    套接字文件

    linux环境中本地连接MySQL需要一个套接字(socket)文件。文件可由参数socket控制。可以通过以下命令查看地址信息:
    1. show variables like 'socket' G;

    pid文件

    当MySQL实例启动时,会将自己的进程ID写入pid文件中。该文件可由参数pid_file控制。默认路径位于数据库目录下,文件名为主机名.pid。
    1. show variables like 'pid_file' G;

    重做日志文件

    对于InnoDB存储引擎而言重做日志至关重要,详细原理机制在cache 与buffer中已经讲解,在此不再赘述。
    它的主要目的是,万一实例或者介质失败(media failure),重做日志文件就能派上用场。如数据库由于所在主机掉电的哦啊只实例失败,InnoDB存储引擎会使用重做日志回复到掉电前端时刻,以此来保证数据的完整性。

    参数innodb_log_file_size、innodb_log_files_in_group、innodb_mirrored_log_groups、innodb_log_group_home_dir影响着重做日志文件的属性。
    innodb_log_buffer_size:控制redo log buffer大小;
    innodb_log_files_in_group控制redo log文件数量,默认为2;
    innodb_mirrored_log_groups:控制日志镜像文件组数量,默认为1;
    可以通过以下命令查看重做日志的配置信息:
    1. 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为后缀名的文件,这个文件记录了该表的表结构定义。


    InnoDB存储引擎文件 

    太重要,太有份量了,暂时搁置吧。下次抽空补上,这里需要看很多文章才能写好。







  • 相关阅读:
    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
    洛谷 P1062 数列
    洛谷 P2822 组合数问题
    HDU 6112 今夕何夕
    poj 2115 C Looooops
    HDU 6092 Rikka with Subset
    poj 2720 Last Digits
    poj 1254 Hansel and Grethel
    poj 1222 EXTENDED LIGHTS OUT
    poj 2459 Sumsets
  • 原文地址:https://www.cnblogs.com/snifferhu/p/4736559.html
Copyright © 2011-2022 走看看