Mysql 文件-(Innodb存储引擎读书笔记)
2014-06-10 22:39
106 查看
1 参数文件及mysql参数
配置参数文件
通过下面命令可以得知当前配置的参数文件在什么位置./bin/mysql --help | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /home/seven/study/mysql-5.6.17/install/my.cnf ~/.my.cnf
参数查看
mysql> show variables like 'innodb_buffer%'\G; 会查看到很多和innodb_buffer相关的参数设置mysql> show variables like 'log_error'\G;查看错误日志路径
参数设置
select @@session.read_buffer_size; 查看当前session的read_buffer_sizeselect @@global.read_buffer_size; 查看全局的read_buffer_size
set @@session.read_buffer_size=1024000; 设置当前session的read_buffer_size
set @@session.read_buffer_size=1024000; 设置当前session的read_buffer_size
2 日志文件
错误日志
mysql> show variables like 'log_error'\G;查看错误日志路径慢查询日志
mysql> show variables like 'long_query_time'\G; 慢查询的阈值(大于该值为慢查询)mysql> show variables like 'slow_query%'\G;查看慢查询日志是否开启及日志文件
mysql> show variables like 'log_queries_not_using_indexes'\G;可以看出如果运行的sql语句没有使用索引,就将其记录到慢查询日志的动作里是否有设置
mysqldumpslow slow.log 可以查看记录在slow.log里的慢查询日志
查询日志
默认文件名是: 主机名.log, 记录了所有对mysql数据库的请求日志。二进制日志
二进制日志记录的数据库的所有更改操作(不包含show, select这样的操作)。但是有些没有的导致数据库修改的操作也会记录(比如没有导致修改的update操作)。开启二进制日志, 在my.conf里设置:
log_bin = mysql-bin
binlog_format = mixed
mysql> show master status; 查看主库状态
mysql> show binlog events in 'mysql-bin.000001'; 可读的显示binlog
当进行事物时,为提交的二进制日志会记录在一个缓冲区内。事物提交前将缓冲区的日志刷到二进制文件。binlog_cache_size就是缓冲区的大小。如果过小,会导致日志写入临时文件。
mysql> show variables like "binlog_cache%"; 查看binlog_cache_size大小。
mysql> show global status like "binlog_cache%";查看使用缓冲次数和临时文件次数。
sync_binlog = N表示每写缓冲多少次就同步到磁盘的。1表示没次将缓冲区日志刷到二进制文件时,就同步到磁盘。
binlog_format参数定义了二进制日志的格式,包括:
STATEMENT(逻辑的sql语句,对复制有一定要求,可能导致主从不一致,事物隔离级别时REPEATABLE READ)
ROW(每行的更改,可以解决复制问题,同时事物隔离级别可以为READ COMMITED。但是可能会带来二进制文件大小的增加,同样复制的网络开销变大),
MIXED(两者结合);
可以通过mysqlbinlog命令可读的查看二进制日志: ./bin/mysqlbinlog --start-position=120 ./data/mysql-bin.000001
3 表结构文件
.frm文件用来存储表的结构定义。或者相应视图的定义。4 表存储引擎文件
表空间文件
.ibd文件为表空间文件。如果innodb_file_per_table为on的话,则每个表会有独立的表空间。~/study/mysql-5.6.17/install$ ls -lhrt data/test/ 可以看到:
-rw-r--r-- 1 seven seven 65 3月 15 03:07 db.opt
-rw-rw---- 1 seven seven 8.4K 6月 8 15:40 t_z.frm
-rw-rw---- 1 seven seven 96K 6月 8 20:40 t_z.ibd
重做日志文件
重做日志是为了实例异常关闭后恢复到关闭前的时刻。保证数据的完整性。默认情况下,数据目录下会有ib_logfile0和ib_logfile1两个文件记录这重做日志。Innodb存储引擎至少有1个重做日志文件组(可以设置多个镜像日志组,提高可靠性),每个文件组至少2个重做日志(如默认情况)。日志组中每个重做日志大小相同,循环写入。
mysql> show variables like "innodb%log%"; 查看影响日志文件的属性。
其中,innodb_log_file_size即重做日志大小,对innodb存储引擎的性能影响很大,设置的很大,恢复可能耗时很长。设置的很短,可能一个事物的日志需要多次切换重做日志文件。
另外,重做日志文件太小会导致频繁发生checkpoint.导致性能抖动。
重做日志的写入并不是直接写入文件,而是先写入日志缓冲(redo log buffer). 然后按照一定的顺序写入日志文件。重做日志从换缓冲区写入文件时,按512字节(扇区大小)。因此可以
保证写入的原子性,从而不需要doublewrite.
从日志缓冲写入磁盘时按照一定条件进行的:
主线程周期将重做日志从缓冲写入磁盘,不论事物是否提交。
innodb_flush_log_at_trx_commit表示事物提交时,如何处理重做日志。(0不写磁盘,等待主线程周期刷新。1表示提交时,将重做日志同步写磁盘并fsync. 2表示异步写磁盘,即写到文件系统的缓存。)
相关文章推荐
- MySQL技术内幕-InnoDB存储引擎读书笔记(MySQL日志文件)
- 修改my.cnf文件后mysql无法生成mysql.sock文件
- PHP连接MYSQL的数据库类文件!
- MySQL的my.ini文件优化!
- MYSQL中MY.CNF配置文件及参数介绍
- 打包J2EE工程为可执行文件(集成JVM、TOMCAT、MYSQL)
- 把mysql 4.0.20的数据表文件(myisam)格式迁移到mysql 5.0下面后phpmyadmin出现乱码
- 【原创】解决jsp文件和MYSQL数据乱码的问题...
- linux下安装mysql时候遇到mysql.sock文件问题
- MYSQL中MY.CNF配置文件及参数介绍
- 如何修改mysql数据文件位置
- 利用Autoconf和Automake制作Makefile文件时,如何连接进MYSQL的库和头文件?
- 一个mysql的配置文件
- MySQL 直接读取csv文件数据到表中
- 如何利用php+mysql保存和输出文件
- MySQL字符集问题解决方法(包括改配置文件、命令行修改和JDBC的问题)
- 用PHP将mysql数据表转换为excel文件格式
- 利用mysql上传和执行文件
- 用 PHP 导出 MySQL 数据库内容为 .sql 文件
- 在MySQL中执行SQL文件