三 MySQL文件

Mysql数据库和InnoDB存储引擎表的各种文件,包括

参数文件:告诉Mysql 实例启动时在哪里找到数据库文件,并指定了某些初始化参数.

日志文件:用来记录Mysql实例对某种条件做出响应时写入的文件.如错误日志文件,二进制日志文件,慢查询日志文件,查询日志文件等.

socket文件: 当用UNIX域套接字方式进行连接时需要的文件

pid文件: MySql 实例的进程ID文件

MySql表结构文件:用来存放MySql表机构定义文件

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

一:参数文件

在MySQL实例启动时,数据库会先去读一个配置参数文件.用来寻找数据库的各种文件所在位置以及指定某些初始化参数. 在linux环境,可以通过 mysql -help | grep my.cnf来查找配置文件.

也可以通过show 命令查看

show variables like 'innodb_buffer_pool%';

修改参数的值,其影响范围可以是全局的,也可以是当前会话的. 比如 set @GLOBAL.read_buffer_size= 102245;//全局性设置

set @@session.read_buffer_size=102454;//当前会话有效

二:日志文件

日志文件记录了影响MySQL 数据库的各种类型活动。常见的日志文件有:

错误日志(error log),二进制日志(binlog),慢查询日志(slow query log),查询日志(log).这些日志方便我们了解数据库执行的状态等信息.

2.1 错误日志

       可以通过show variables like 'log_error'来定位文件位置.

 如果发现数据库不能正常启动,或者其他异常情况。可以首先定位出错误日志位置,然后查看进行分析,比如说是权限问题。也会有 warn警告提示 内存大小不足等。

2.2 慢查询日志

   我们可以通过分析这个日志。来找到慢sql语句,然后有针对性的进行sql优化.long_query_time 这个参数是设置多长时间为慢查询.默认是10s.

 我们可以查询mysql.slow_log 表,里面记录了慢查询日志.

2.3查询日志

   和慢查询日志类似。只不过 它会记录所有对MySQL的请求. 这些日志记录下 mysql.general_log表中.

2.4 二进制日志  

  二进制日志记录了对MySQL数据库执行更改的所有操作.但不包括select ,show等操作.二进制日志的主要作用有

    恢复:某些数据的恢复需要二进制日志,例如 在一个数据库全备文件恢复后,用户可以通过二进制日志进行 point-in-time的恢复.

   复制:其原理和恢复类似.比如主从之间的实时同步.

   审计:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击.

二进制日志文件默认没有启动。需要手动启动.开启会 使性能降低1%左右.

sync_binlog 参数为1.表示采用同步写磁盘的方式来写二进制日志。当为0(默认值) 的时候,表示采用缓冲的写的方式写入磁盘.

三. 套接字文件。

 在Unix系统下 本地连接MySQL可以采用UNIX域套接字方式。了解即可

四. PID文件

 当MySQL 实例启动时,会将自己的进程ID写入一个文件中,该文件即为pid文件.该文件可由参数pid_file控制.默认位于数据库目录下.文件名为主机名 +.pid.了解即可.

 五. 表结构定义文件

   MySQL 数据的存储时根据表进行的,每个表都有与之对应的文件.并且都有一个后缀为frm的文件。这个文件记录了该表的表结构定义.

六: InnoDB 存储引擎文件

     存储引擎文件包括日志文件,表空间文件

 6.1表空间文件

   InnoDB采用将存储的数据按照表空间(tablespace)进行存放的设计.默认配置下会有一个初始大小为10MB,名为idbatal的文件。该文件就是默认的表空间文件.我们也可以对其进行设置大小。

默认表空间文件 也可以设置为多个文件,位于不同的磁盘上面,用于提高数据库的性能.

Innodb_data_file_path参数 表示基于 innodb存储引擎的表的数据都会记录到该共享表空间中。

Innodb_file_per_table 参数表示每个表都会有个文件来记录其信息.以表名.ibd 为文件名.这个文件只存储表的数据,索引,和插入缓冲BITMAP信息,其他信息还是存储在共享表空间中.

6.2重做日志文件 

 重做日志的作用:当系统宕机. 当数据库重启时,InnoDB存储引擎会使用重做日志恢复到掉电前的时刻。以此来保证数据的完整性.

重做日志和二进制日志文件的区别:

   1) 二进制日志会记录所有与MySQL数据库有关的日志.包括InnoDB,MyISAM,Heap等其他存储引擎的日志。而InnoDB存储引擎的重做日志只记录有关 InnoDB存储引擎的事务日志

  2)记录的内容不同, 二进制日志文件记录是逻辑日志,记录的是关于一个事务的具体操作内容。比如insert,update语句. 而InnoDB存储引擎的重做日志文件记录的是关于每个页(Page)的更改的物流情况.

 3)写入的时间不同.二进制日志文件仅在提交前进行提交,即只写磁盘一次,不论这时事务多大.而在事务进行的过程中,却不断有重做日志条目被写入到重做日志文件中.

重做日志缓冲写入过程中,是按照一定的顺序写入日志文件。并且是按照512个字节进行写入,可以保证写入是成功,不用doublewrite。

如果想深入了解。可以查看<<MySQL技术内幕 InnoDB存储引擎>>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值