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

MySQL技术内幕

2018-01-09 11:02 127 查看

第一章 MySQL体系结构

存储引擎

InnoDB

MyISAM

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存储引擎的事务日志。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: