(1.2)学习笔记之mysql体系结构(数据库文件)
InnoDB存储引擎体系结构图
1. InnoDB数据库的结构
(1)redo log:这里的redo log不是数据的redo log,InnoDB本也是一个数据库,身具有的redo log,所以这里的redo log只是InnoDB存储引擎的,这里是循环写入的(如下图这种模式)。但经过mysql server层的封装的话,日志是放在iblog下的。
iblog对所有的存储引擎做了一层封装,把所有存储引擎的日志都封装成iblog了。
上图中的,ib_buffer_pool 文件是缓存池预热文件
(2)user tablespace:用户表空间
包含:
【1】insert buffer bitmap page:插入数据的位图索引页 【2】leaf page segment:聚集索引的叶子节点(也就是数据表数据) 【3】no leaf page segment:非叶子节点的页(其实也就是索引存放)
从这里我们可以查出,其实聚集索引是逻辑上连续,而物理上并不是放在一起的。
(3)sys tablespace:系统表空间
主要是存放了undo,数据字典等信息;
2. 数据库文件
(1)数据库配置文件/参数文件
一般默认会按照顺序从以下几个目录去找;
【1】/etc/my.cnf 【2】/etc/mysql/my.cnf 【3】/usr/local/mysql/my.cnf 【4】./my.cnf
#以下命令可以指定配置文件/参数文件的路径 mysqld_safe --default-file=/u01/my3306/my.cnf
#如果要运行还得再该命令后面加个&
mysqld_safe --default-file=/u01/my3306/my.cnf &
(2)表结构定义文件
--进入查看表结构定义文件目录
cd /u01/my3306/data/mysql
以下这样的结构是MYISAM引擎的():
【1】.frm:放表定义 【2】.MYD:放表数据 【3】.MYI:放表索引
下面这些才是用户的:
直接cat user.frm 是看不了的,会是乱码,需要mysql工具来看。
要去官网下载 MySQL Utilities
#然后装好后运行下面语句即可查看表结构定义
mysqlfrm --diagnostic time_zone_transition.frm
(3)数据文件
就是图中的MYD文件,不过这是Myisam的,如果是innodb应该会把索引文件和数据文件放在一起
(4)错误文件
这里因为my.cnf里面没有指定,所以查出来错误文件默认放在mysql数据根目录下的bogon.err
注意,是因为我的my.cnf文件是这样,所以结果才出现上图的情况
(5)慢查询日志
一般慢查询日志默认是没有开启的,我们来看看如何开启。
show variables like '%slow%';
slow_query_log 这里要设置为ON,这样慢查询日志才会启用,并且才会把数据写到如上图日志文件里面去。
#开启慢查询日志
set global slow_query_log='ON';
#查看当前超过多少秒认定为慢查询,这里显示的是10S,如下图
#设置查询时间超过多久为慢查询并记录在慢查询日志中去
set global long_query_time=1;
注意,这些修改都只是临时的,重启一次mysql之后就没用了。要永久有效需要在my.cnf文件里配置。
#编辑配置文件/etc/my.cnf加入如下内容 [mysqld] slow_query_log = ON slow_query_log_file = /var/lib/mysql/test-10-226-slow.log long_query_time = 1 #修改配置后重启mysql systemctl restart mysqld mysql -uroot -p #使用下面命令验证 show variables like 'slow_query%'; mysql永久开启了漫查询日志功能
(6)通用日志
默认不开,一般用作数据库审计。开了之后会把数据库所有的操作记下来。
show variables like '%gen%'
相关文章
- java 逐行读取csv文件存入mysql数据库
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
- linux定时备份mysql数据库文件
- 【MySQL】数据库介绍以及MySQL数据库
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- MySQL无法启动报 Error: could not open single-table tablespace file ./mysql/innodb_table_sta
- MySQL:从.ibd文件恢复误删的数据
- Mysql错误check the manual that corresponds to your MySQL server version for the right syntax
- 【MySQL】如何向mysql数据库插入当前时间
- python操作mysql数据库系列-操作MySql数据库(五)
- python操作mysql数据库系列-操作MySql数据库(三)
- Mysql命令mysql:连接Mysql数据库
- 【Node.js】学习Node.js简介、读取本地文件、连接数据库和MySQL常用查询命令(内附详细步骤)——学习Node.js
- idea 社区版连接mysql数据库教程,Cannot connect to “MySQL-5.1.43“. CLIENT_PLUGIN_AUTH is required
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
- mysql update语句加order by进行指定顺序的更新
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- 在centos中php 在连接mysql的时候,出现Can't connect to MySQL server on 'XXX' (13)
- 【转】Mysql学习---MySQL悲观锁中的排它锁
- Amoeba for MySQL 非常好用的mysql集群软件
- PostgreSQL通过mysql_fdw访问MySQL数据库
- mysql误删ibd文件
- (5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)
- 猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库
- 【数据库学习】——Python实现mysql数据库SQL文件生成和导入
- Mysql报Too many connections,不要乱用ulimit了,看看如何正确修改进程的最大文件数