MySQL面试题(经验)

一、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

三、说说binlog、redolog的区别?

1.binlog会记录所有与MySQL有关的记录,包括InnoDB、MyISAM等其他存储引擎的日志。
而InnoDB存储引擎的redo log只记录有关该存储引擎本身的事务日志。
2.binlog记录的是一个事务的具体操作内容,即该日志是逻辑日志。
而redo log记录的是每个页(page)的物理更改情况。
3.binlog仅在事务提交前进行提交,即只写磁盘一次,不论这时该事务多大。
而在事务的进行的过程中,却不断有重做日志条目(redo entry)被写入redo log中。
四、说说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的恢复通常需要较长的时间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值