MySQL技术内幕
2018-01-09 11:02
127 查看
第一章 MySQL体系结构
存储引擎
InnoDBMyISAM
NDB存储引擎
Memory存储引擎
Archive
Federated
Maria
连接MySQL
TCP/IP命名管道
Unix域套接字
第二章 InnoDB存储引擎
概述
InnoDB存储引擎是事物安全的存储引擎。架构
InnoDB存储引擎有多个内存块,这些内存块组成一个很大的内存池,负责如下的工作:维护多个进程/线程需要访问的多个内部数据结构;
缓存磁盘上的数据,方便快速读取,同时对磁盘上的数据进行修改前,也在这里缓存;
重做日志缓冲(redo log cache);
后台线程的主要作用是负责刷新内存中的数据,保证缓冲池中缓冲最新的数据,同时将已经修改的数据刷新到磁盘文件。保证在数据库发生异常的情况下,InnoDB存储引擎能够恢复到正常运行状态。
后台线程
InnoDB存储引擎是多线程模型,因此他有多个不同的后台线程,负责处理不同的任务。Master Thread:核心线程,将缓冲区中的数据异步刷新到磁盘,保证数据的一致性。包括脏页刷新,合并插入缓冲,UNDO页的回收等。
IO Thread:InnoDB使用AIO来处理写IO请求,这样可以极大提高数据库的性能。主要工作是负责这些IO请求的回调。
Purge Thread:事务提交后,其所使用的undolog可能已经不再需要,因此需要使用Purge Thread来回收已经分配并使用的Undo页。
Page Cleaner Thread:InnoDB1.2之后加入的,将之前版本中脏页的刷新操作都放到独立的线程中完成。
内存
缓冲池LRU List、Free List、Flush List
重做缓冲日志
第三章 文件
参数文件告诉mysql实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数。这些参数指定了某种内存的大小等设置,还会介绍各种参数的类型。
文件位置
mysql --help | grep my.cnf
查看参数
SHOW VARIABLES LIKE 'VARIABLE_NAME';
SELECT FROM GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'VARIABLE_NAME';
参数类型
动态参数
实例运行中可以修改。
静态参数
实例运行过程中不可修改。
日志文件
记录mysql对某种条件做出响应时的文件,如错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件等。这些日志文件可以帮助DBA对mysql数据库的运行状态进行诊断,从而进行数据库层面的优化。
错误日志
作用:对mysql的启
4000
动、运行、关闭过程进行了记录。
定位文件:
SHOW VARIABLES LIKE 'log_error'
二进制日志
作用:记录了对mysql数据库执行更改的所有操作。
查看方式:
SHOW MASTER STATUS;
SHOW BINLOG EVENTS IN 'xxx.log'\G;
意义:
恢复:某些数据的恢复需要二进制日志
复制:通过复制与执行二进制日志,使一台远程的mysql数据库进行实时同步。
审计:通过二进制文件中信息来进行审计,判断是否对数据库进行注入攻击。
慢查询日志
作用:帮助DBA定位可能存在问题的SQL语句。
参数:
long_query_time、
log_queries_not_using_indexes
导出慢查询记录:
mysqldumpslow xxx-slow.log
例如导出耗时最长的10条sql语句:
mysqldumpslow -s al -n 10 xxx-10-slow.log
意义:进行SQL语句层面的优化。
查询日志
记录所有对数据库请求的信息。无论这些请求是否得到了正确的执行。
socket文件
当用Unix套接字方式连接时需要的文件。
文件位置:
SHOW VARIABLES LIKE 'socket'
pid文件
mysql实例进程ID文件。
文件位置:
SHOW VARIABLES LIKE 'pid_file'
mysql表结构文件
用来存放mysql表结构的文件。不论采用何种存储引擎,mysql都有一个以frm为后缀的文件,这个文件记录了该表的表结构定义。视图也一样。
存储引擎文件
因为mysql表存储引擎的关系,每个存储引擎都会有自己的文件来保存各种数据。这些存储引擎真正保存了记录和索引等数据。
表空间文件
定义:InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计。默认表空间文件为 ibdata1,初始容量为10M。同时,也可以为每张表生成独立的表空间。
重做日志文件
定义:默认情况下,在InnoDB存储引擎的数据目录下会有两个文件:ib_logfile0和ib_logfile1,这就是重做日志。
作用:记录了对InnoDB存储引擎的事务日志。
相关文章推荐
- 跟我一起学习MySQL技术内幕(第五版):(第二章学习日记2)
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记6)
- Mysql技术内幕——InnoDB存储引擎
- MySQL技术内幕之一:使用SQL管理数据
- MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- Mysql技术内幕——InnoDB存储引擎
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记15)
- MySQL技术内幕(一)
- MySQL技术内幕:InnoDB存储引擎(第2版)
- 读书笔记 —— 《MySQL技术内幕 InnoDB存储引擎》
- mysql技术内幕学习笔记-查询优化器及索引(一)
- InnoDB Insert(插入)操作(下)--mysql技术内幕
- mysql innodb技术内幕 ~读 1,2,3 复习
- MySql技术内幕之——InnoDB存储引擎…
- InnoDB Insert(插入)操作(下)--mysql技术内幕
- 跟我一起学习mysql技术内幕(第五版)吧!(学习日志)
- Mysql技术内幕知识点摘录
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记12)
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记2下)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(上)