MySQL技术内幕InnoDB存储引擎学习笔记(第三章)

                       第三章 文件

一、实验环境

宿主机系统:windows7

虚拟机:OracleVMVirtualBox

Linux:ubuntukylin-14.04.1-amd64.iso

jdk:1.7.0_101

mysql:5.7.12

书上的mysql版本:5.6.6

二、都有什么文件

1.参数文件:my.cnf,showvariables like,没有隐藏参数。

动态参数:可以在mysql实例运行中进行更改。

set 【global|session】system_var_name = expr;

SET @@global.read_buffer_size=1048576;

select @@session. read_buffer_size;当前会话

select @@global. read_buffer_size;整个实例

静态参数:在整个实例声明周期内都不得进行更改。

set global datadir = '/db/mysql';

ERROR 1238(HY000):Variable 'datadir' is a read onlyvariable;

2.日志文件:

错误日志:

show variable like 'log_error';定位文件位置

二进制日志:

记录了对mysql数据库执行更改的所有操作, select和show操作除外。

show master status;

show binlog events in '';

主要作用:

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

复制:主从等。

审计:通过日志进行审计,判断是否有对数据库进行注入的攻击。

通过配置参数log-bin 【=name】来启动二进制日志。如不指定name,则默认二进制日志文件名为主机名,后缀名为二进制日志的序列号,所在路径为数据库所在目录(datadir)

默认不启动,启用二进制日志,性能会下降1%左右。

重要参数:

max_binlog_size:单个二进制文件的最大值,超过该值,产生新文件,后缀名+1,记录到.index文件中。默认为1.1G。

binlog_cache_size:当使用事务的表存储引擎时,所有未提交的二进制日志会被记录到一个缓存中去,等该事务提交时直接将缓冲中的二进制日志写入二进制日志文件,而该缓冲的大小由该参数决定。默认为32k.该参数基于会话,不能设置过大或过小。

sync_binlog:每次缓冲多少次就同步到磁盘,默认为0

binlog-do-db:

binlog-ignore-db:

log-slave-update:如果当前数据库是复制中的slave角色,则它不会将从master上取得并执行的二进制文件写入到自己的二进制日志文件中去。如果需要写入,则设置该参数。

binlog_format:可设置的值有STATEMENT、ROW、MIXED

STATEMENT:二进制日志文件记录的是日志的逻辑SQL语句。

ROW:记录表的行更改状况。日志变大,磁盘要求增加

MIXED:默认采用statement格式进行二进制日志文件的记录,一些情况下会使用ROW格式,可能的情况有:

1)表的存储引擎为NDB,这时对表的DML操作都会以ROW格式记录。

2)使用了UUID(),USER(),CURRENT_USER(),FOUND_ROWS(),ROW_COUNT()等不确定函数。

3)使用了INSERT DELAY 语句

4)使用了用户定义函数(UDF)

5)使用了临时表(temporary table)

查看二进制文件:用工具mysqlbinlog命令,如果以ROW的方式记录,则加上参数-v,或-vv.。

慢查询日志:

默认情况下,不启动慢查询日志,用户需手工修改参数log_slow_queries =ON;long_query_time=10默认10s,运行时间超过该值的sql语句都记录到慢查询日志中。等于该值的不会被记录。

注意:实验结果和书上结果不同。实验结果如图所示。

如果运行语句没有使用索引,也会记录到慢查询日志中,用参数log_queries_not_using_indexes=ON;

log_throttle_queries_not_using_indexes表示每分钟允许记录到slow log的且未使用索引的sql语句次数。

命令:mysqldumpslownh122-190-slow.log查询慢查询日志(未验证)

命令:mysqldumpslow-s al -n 10 david.log执行时间最长的10条sql语句(未验证)

表:slow_log,参数log_output指定了慢查询输出格式,默认为FILE,可以将其设为TABLE

参数:slow_query_type,用来表示启用slow log的方式

0:不将sql语句记录到slow log

1:根据运行时间将sql语句记录到slow log

2:根据逻辑IO次数将sql语句记录到slow log

3:biaoshi 根据运行时间及逻辑IO次数将SQL语句记录到slowlog

查询日志

默认文件名为:主机名.log,记录了所有对mysql数据库请求的信息。

表:general_log

3.socket文件:一般在/tmp目录下,名为mysql.sock.

实验结果

4.pid文件:实例的进程文件

mysql启动时,会将自己的进程ID写入一个文件中,该文件为pid文件。由参数pid_file控制,默认位于数据库目录下,文件名为主机名.pid

实验结果如下:

5.mysql表结构文件

每个表或试图,都有一个以frm为后缀名的文本文件,记录该表的表结构定义。

6.存储引擎文件

表空间文件

inndb采用将存储的数据按照表空间进行存放的设计。默认表空间文件为:idbata1,大小为10M,多个文件组成一个表空间,同时指定文件的属性,参数为:innodb_data_file_path=/db/ibdata1:2000M;/dr2/db/ibdata2:2000M:autoextend

设置完以后,所有基于innodb存储引擎的数据都会记录到该共享空间中。

重做日志文件

默认情况下,在innodb存储引擎的数据目录下会有两个名为ib_logfile()和ib_logfile1的文件。

每个innodb至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件。这两哥日志文件循环写入。

参数innodb_log_file_size指定每个重做日志文件的大小,总的大小不得大于等于512GB

参数innodb_mirrored_log_groups指定了日志镜像文件组的数量,默认为1,表示只有一个日志文件组,没有镜像。

和二进制日志的区别:

1.二进制日志会记录所有与mysql数据库由管的日志记录,而innodb的重做日志只记录有关该存储引擎本身的事务日志。

2.记录的内容不同,二进制日志文件记录的是逻辑日志,而innodb存储引擎的重做日志文件记录的是关于每个页的更改的物理情况。

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

重做日志条目的结构:

redo_log_type:占用1字节,表示重做日志的类型

space:表示表空间的ID,但采用压缩的方式,因此占用的空间可能小于4字节

page_no:表示页的偏移量,同样采用压缩的方式。

redo_log_body:表示每个重做日志的数据部分,恢复时需要调用相应的函数进行解析。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《MySQL 技术内幕 InnoDB 存储引擎》是一本探讨 MySQLInnoDB 存储引擎技术书籍,该书主要讲解了 InnoDB 存储引擎的原理、架构和实现细节。 InnoDBMySQL 数据库的默认存储引擎,具有事务处理和行级锁定等特性,广泛应用于企业级数据库系统。因此,了解 InnoDB 存储引擎的内部工作原理和性能优化技巧对于 MySQL 数据库的使用和优化非常重要。 这本书首先介绍了数据库系统和存储引擎的基本概念,然后详细讲解了 InnoDB 存储引擎的体系结构和核心组件。读者可以了解到 InnoDB 存储引擎是如何将数据存储在磁盘上,以及如何通过索引加快查询速度。 在介绍完基础知识之后,书中继续深入讲解了 InnoDB 存储引擎的事务处理机制、并发控制和崩溃恢复等关键技术。读者可以学习到如何正确使用事务,并了解到 InnoDB 是如何通过行级锁定来实现并发访问的。 此外,书中还涵盖了 InnoDB 存储引擎的性能优化技巧和调试方法。读者可以学习到如何通过合理的配置和索引设计来提升查询性能,以及如何通过监控和分析工具来定位和解决性能问题。 总之,《MySQL 技术内幕 InnoDB 存储引擎》是一本深入剖析 InnoDB 存储引擎的权威技术书籍,对于想要深入理解和优化 MySQL 数据库的开发人员和数据库管理员来说是一本非常有价值的参考资料。 ### 回答2: 《MySQL技术内幕InnoDB存储引擎》是一本深入讲解MySQL InnoDB存储引擎技术书籍。InnoDBMySQL中的一种存储引擎,相比其他存储引擎,如MyISAM,它拥有更好的事务支持和并发控制能力,可以提供更高的数据一致性和可靠性。 这本书主要从架构、存储、索引、事务、锁定等方面对InnoDB存储引擎进行了详细的介绍和分析。首先,作者介绍了InnoDB的整体架构,包括缓冲池、日志系统、刷新机制等,帮助读者理解InnoDB的内部工作原理。 然后,书中详细解释了InnoDB的物理存储机制,包括页结构、数据页、索引页等。通过了解这些概念,读者可以更好地理解数据在磁盘上的存储方式,进而优化查询性能和空间利用。 接着,书中介绍了InnoDB的索引机制,包括B+树索引和自适应哈希索引。通过学习这些索引类型的原理和使用方法,读者可以更好地选择和创建适合自己业务需求的索引,提高查询效率。 此外,该书还详细说明了InnoDB的事务处理机制,包括事务的隔离级别、锁定机制、行锁和表锁等。通过学习这些内容,读者可以更好地理解和掌握InnoDB的并发控制技术,避免数据冲突和锁定问题。 总而言之,《MySQL技术内幕InnoDB存储引擎》通过深入讲解InnoDB的各个方面,帮助读者更好地理解和应用该存储引擎。无论是MySQL开发人员还是DBA,都可以从这本书中获得对InnoDB的深入了解,提高数据库性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值