您的位置:首页 > 数据库 > MySQL

读mysql技术内幕 InnoDB 第三章

2013-03-22 11:22 239 查看
三、文件
我们可以把数据库参数看成一个key/value;

1、mysql的参数分为{动态(dynamic,可以更改的)参数和静态(static,不允许修改的)参数}

2、Set [global|session] system_var_name=expr

set [@@global.|@@session.|@@]system_var_name=expr

global和session表明该参数的修改时基于当前会话的还是整个市整个实例的生命周期

<!--
3.1.2,和我的验证出现部分误差,这个最好去看官网
有些动态参数只能在会话中修改 如autocommit;
有些参数修改后,在整个实例生命周期都会生效如binlog_cache_size
有些参数既可以在会话中又可以在整个实例生命周期内生效如read_buffer_size
-->




日志文件:
show vari

ables like 'log_error';//前边我介绍过怎么开启日志文件,并且可以设置目录

慢查询日志

show variables like 'log_slow_queries';//前边介绍过了

分析文件:mysqldumpslow 日志文件名称

查询日志:

二进制日志:big_log.00001是2进制日志文件,指定的名称,bin_log.index是2进制的索引文件

开启表空间,我这还没有显示出来:



Oracle的参数文件分别为二进制的参数文件(spfile)和文本类型的参数文件(init,ora),mysql的参数文件仅是文本文件

3.1.2

mysql的参数分为动态(dynamic)参数和静态(static )参数.可以通过set更改的是dynamic ,

我们可以设置慢查询,那么慢查询的输出格式:

show variables like 'log_output';



更改的时候 set global log_output='TABLE';

select * from mysql.slow_log\G;,查看慢查询的日志

修改慢查询的日志的引擎

alert table mysql.slow_log engine=myisam;

注意:当我们把他的慢查询日志引擎改成myisam,会对数据库造成一些额外的开销

2、二进制日志记录了对数据库执行的更改的所有操作,但是不包括select show这类的操作,因为这类操作对日志没有影响,如果你想要记录这些日志,那么就要使用查询日志,而不是二进制日志,

二进制日志:恢复,复制

show variables like 'datadir';查看binlog所在位置,

影响binlog的参数:

max_binlog_size:单个binlog的最大值,超过该值,则后缀+1,产生新的binlog



,binlog_cache_size:基于会话(session)的,mysql自动分配,不能太大,也不能太小

sync_binlog:表示每写缓冲多少次就同步到磁盘,如果=1,表示采用同步写磁盘的方式写二进制日志,但是使用innodb引擎的时候,一个事物在commit之前,由于sync_binlog=1,因此2进制日志会即刻写入磁盘,到那会死事务还没有提交,此时发生宕机,下次mysql启动,事务就会回滚,但是二进制记录了该事务,不能被回滚,那么我们可以设置innodb_support_xa=1,来解决,innodb_support_xa=1确保了二进制日志和innodb存储引擎数据文件的同步。

binlog-do-db,binlog-ingore-db,:需要写入或者忽略写入哪些库的日志,默认为空

log-slave-update,如果你的从数据库是另一个数据库的主数据库,你就必须设置该参数

binlog_format;记录二进制日志的格式,statement,row,mixed.设置为row,当我们执行update的时候,会增加磁盘消费。

select @@global.binlog_format\G;

show master status\G;

执行操作

show master status\G;

set @@session.binlog_format='';

select @@global.binlog_format\G;

show master status\G;

执行操作

show master status\G;

比较不同
慢查询日志用cat head tail等命令查看,binlog使用mysql的工具mysqlbinlog查看


mysqlbinlog -vv --start-position=1065 binlog名称 我们只需要在mysqlbinlog加上参数-v或者-vv我们可以看到执行的具体信息

3、套接字文件

unix系统下面本地链接mysql可以采用unix域套接字方式,show variables like 'socket'\G;

4、pid文件

mysql实例启动的时候,会将自己的进程ID写入一个文件中,该文件由参数pid_file控制:

show variables like 'pid_file'\G;

5、表结构定义文件 frm文件记录了该表的结构定义,

6、InnoDB 引擎

默认的配置下,会有一个初始化为10M,名字为ibdata 1的文件,--》表空间文件(tablespace file)

innodb_data_file_path,设置 innodb_data_file_path=spec1:size:autoextend;spec2:size;....

size:文件的大小,autoextend:表示文件满了之后,该文件可以自动增长

innodb_data_file_path,对于所有基于innodb引擎的表的数据都会记录到该文件里面

innodb_file_per_table:对于每个表产生一个单独的表空间,文件名为.ibd;

单独的表空间仅存储该表的数据,索引和插入缓冲等信息,其他的信息存放在默认的表空间内



默认情况下,redo log file有两个,ib_logfile0,ib_logfile1;redo log file的目的是,万一实例或者介质失败(media failure),redo log file ,恢复,保证数据的完整性,



innodb_log_file_size:redo log file size

innodb_log_files_in_group :redo log file 的数量,默认2

innodb_log_group_home_dir:日志文件路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: