一、MySQL中包含哪些类型的文件?
1、参数文件:my.cnf
2、日志文件,包括错误日志、查询日志、慢查询日志、二进制日志
3、Mysql表文件:用来存放mysql表结构的文件,一般以.frm为后缀
4、Socket文件:当用unix域套接字方式进行连接时需要的文件
5、Pid文件:mysql实例的进程ID文件
6、存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。
二、MySQL中有哪些类型的日志文件?
最常见的有:
1.错误日志 记录启动、运行或停止mysqld时出现的问题。
My.ini配置信息:
#Enter a name for the error log file. Otherwise a default name will be used.
#log-error=d:/mysql_log_err.txt
2.查询日志 记录建立的客户端连接和执行的语句。
My.ini配置信息:
#Enter a name for the query log file. Otherwise a default name will be used.
#log=d:/mysql_log.txt
3.更新日志 记录更改数据的语句。不赞成使用该日志。
My.ini配置信息:
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=d:/mysql_log_update.txt
4.二进制日志 记录所有更改数据的语句。还用于复制。
My.ini配置信息:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=d:/mysql_log_bin
5.慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
My.ini配置信息:
#Enter a name for the slow query log file. Otherwise a default name will be used.
#long_query_time =1
#log-slow-queries= d:/mysql_log_slow.txt
四、说说InnoDB的双写缓冲缓存机制(Doublewrite Buffer)?
1.double write 究竟是什么? double write 是开辟在tablespace上的一块连续的空间,注意是连续的,所以他对性能的影响并不大。它是当mysql 需要把数据缓冲buffer pool 中将数据刷新到page时 ,需要先将数据fsync到double write 中,然后在需要的时候在将数据刷新到磁盘上的data file。需要注意的是double write 是表空间的一部分page,是物理上存在的,所以断电后任然存在。 2.在数据写失败时会有一下2种情况,Doublewrite机制可以提高数据的安全性,解决部分写问题。 -如果是写doublewrite buffer本身失败,那么这些数据不会被写到磁盘,innodb此时会从磁盘载入原始的数据,然后通过innodb的事务日志来计算出正确的数据,重新 写入到doublewrite buffer -如果 doublewrite buffer写成功的话,但是写磁盘失败,innodb就不用通过事务日志来计算了,而是直接用double write buffer的数据再写一遍. -在恢复的时候,innodb直接比较页面的checksum,如果不对的话,就从硬盘载入原始数据,再由事务日志 开始推演出正确的数据.所以innodb的恢复通常需要较长的时间.