MySQL存储引擎和日志管理
创始人
2025-05-28 17:44:24
0

MySQL存储引擎和日志管理

    • 一、存储引擎的概念
      • 1、Myisam的特点
      • 2、Myisam表支持 3 种不同的存储格式
      • 3、innodb
      • 4、死锁
      • 5、查看系统支持的存储引擎
      • 6、查看表使用的存储引擎
      • 7、修改存储引擎
      • 8、通过 create table 创建表时指定存储引擎
    • 二、日志管理
      • 1、错误日志
      • 2、通用查询日志
      • 3、慢查询日志
      • 4、二进制日志
      • 5、日志查询

一、存储引擎的概念

  • MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。

  • 存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式

  • MySQL常用的存储引擎:MylSAM,InnoDB。

  • MySQL数据库中的组件,负责执行实际的数据I/O操作。

  • MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储。

1、Myisam的特点

MyISAM不支持事务,也不支持外键约束,只支持全文索引,数据文件和索引文件是分开保存的。

访问速度快,对事务完整性没有要求。
MyISAM 适合查询、插入为主的应用。

MyISAM在磁盘上存储成三个文件,文件名和表名都相同,但是扩展名分别为
.frm 文件存储表结构的定义
数据文件的扩展名为 .MYD (MYData)
索引文件的扩展名是 .MYI (MYIndex)

表级锁定形式,数据在更新时锁定整个表
数据库在读写过程中相互阻塞:
会在数据写入的过程阻塞用户数据的读取
也会在数据读取的过程中阻塞用户的数据写入
数据单独写入或读取,速度过程较快且占用资源相对少

2、Myisam表支持 3 种不同的存储格式

(1)静态(固定长度)表
静态表是默认的存储格式。静态表中的字段都是非可变字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。
(2)动态表
动态表包含可变字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁的更新、删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能,并且出现故障的时候恢复相对比较困难。
(3 )压缩表
压缩表由 myisamchk 工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。

3、innodb

(1)支持事务,支持4个事务隔离级别(数据不一致问题)
MySQL从5.5.5版本开始,默认的存储引擎为 InnoDB
5.5之前默认是myisam
(2)读写阻塞与事务隔离级别相关
能非常高效的缓存索引和数据
表与主键以簇的方式存储
支持分区、表空间,类似oracle数据库
支持外键约束,5.5前不支持全文索引,5.5后支持全文索引
(3)对硬件资源要求还是比较高的场合
行级锁定,但是全 表扫描仍然会是表级锁定,如
update table set a=1 where user like ‘%lic%’;
(4)InnoDB 中不保存表的行数
如 select count() from table; 时,InnoDB 需要扫描一遍整个表来计 算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。需要注意的是,当 count()语句包含 where 条件时 MyISAM 也需要扫描整个表。对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立组合索引。

清空整个表时,InnoDB 是一行一行的删除,效率非常慢。Myisam 则会重建表

4、死锁

(1)MyISAM:表级锁定 innodb :行级锁定
当两个请求分别访问/读取2行记录,同时又需要读取对方的记录数据,因为(行锁的限制)而造成了阻寨的现象

(2)如何解决死锁

  1. 业务场景如果并发两大,什么并发量大,读写的并发量大,那我们建议使用innoDB
  2. 如果单独的写入或是插入单独的查询,那我们建议使用没有INNODB

表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:开销大,加锁慢:会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

MyISAM不支持事务,也不支持外键约束,只支持全文索引,数据文件和索引文件是分开保存的需要考虑每个存储引擎提供了哪些不同的核心功能及应用场景。

锁定类型:不同存储引擎支持不同级别的锁定

  • 表锁定:myisam支持。
  • 行锁定:innodb支持。

索引的支持

  • 建立索引在搜索和恢复数据库中的数据时能显著提高性能

  • 不同的存储弓|擎提供不同的制作索引的技术

  • 有些存储引擎根本不支持索引

  • 事务处理的支持

  • 提高在向表中更新和插入信息期间的可靠性

  • 根据企业业务是否要支持事务选择存储引擎

5、查看系统支持的存储引擎

mysql> show engines;

在这里插入图片描述

6、查看表使用的存储引擎

方法一:show table status from 库名 where name='表名'\G;例:show table status from db2 where name='account'\G

在这里插入图片描述

方法二:use 库名;
show create table 表名;例:use db2;
show create table account;

在这里插入图片描述

7、修改存储引擎

(1)通过 alter table 修改

use 库名;
alter table 表名 engine=MyISAM;例:use db2;
alter table account engine=myisam;
show create table account\G

在这里插入图片描述
(2)通过修改 /etc/my.cnf 配置文件

修改 /etc/my.cnf 配置文件,指定默认存储引擎并重启服务

quit
vim /etc/my.cnf
[mysqld]
default-storage-engine=INNODBsystemctl restart mysqld.service
#注意:此方法只对修改了配置文件并重启mysql服务后新创建的表有效,已经存在的表不会有变更。

在这里插入图片描述
在这里插入图片描述
注:此方法只对修改了配置文件并重启mysql服务后新创建的表有效,已经存在的表不会有变更。

8、通过 create table 创建表时指定存储引擎

use 库名;
create table 表名(字段1 数据类型,...) engine=MyISAM;例:mysql -u root -p
use db2;
create table emp(id int,name char,age int) engine=myisam;   #创建表时指定引擎show table status from db2 where name='emp'\G      #查看引擎

在这里插入图片描述

二、日志管理

1、错误日志

错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启。

 vim /etc/my.cnf[mysqld]log-error=/home/mysql/mysql_error.log   #指定日志的保存位置

2、通用查询日志

通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的。

 vim /etc/my.cnf[mysqld]general_log=ONgeneral_log_file=/home/mysql/mysql_general.log

3、慢查询日志

慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的。

   vim /etc/my.cnf[mysqld]slow_query_log=ONslow_query_log_file=/home/mysql/mysql_slow_query.log long_query_time=5    #慢查询时间,设置超过5秒执行的语句被记录,缺省时为10秒

4、二进制日志

二进制日志(binlog)用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启。

  vim /etc/my.cnf[mysqld]log-bin=mysql-bin      #也可以log_bin=mysql-bin#使用相对路径,则文件存储在默认目录/usr/local/mysql/data/中

5、日志查询

#登入mysql
mysql -u root -p[密码]#查看通用查询日志是否开启
show variables like 'general%';	
#查看二进制日志是否开启
show variables like 'log_bin%';									
#查看慢查询日功能是否开启
show variables like '%slow%';								
#查看慢查询时间设置
show variables like 'long_query_time';						
#在数据库中设置开启慢查询的方法
set global slow_query_log=ON;									

相关内容

热门资讯

新年年会策划方案 最新年会策划方案推荐度:年会策划方案推荐度:公司年会策划方案推荐度:年会策划方案推荐度:年会晚会策划...
药品活动策划方案 药品活动策划方案  为保障活动顺利开展,常常需要提前准备一份具体、详细、针对性强的活动方案,活动方案...
新闻媒体的策划书 新闻媒体推荐的策划书  一、前言。  现代广告的迅猛发展,已成为社会经济增长的一大优势。广告收入增长...
主题活动策划 主题活动策划15篇主题活动策划1  泼水节是傣族人民最盛大的节日,傣语称“桑康比迈”,意为六月(傣历...
运动会活动策划方案 运动会活动策划方案(精选6篇)  为确保活动顺利开展,时常需要预先开展活动方案准备工作,活动方案是阐...
真相永远只有一个“推理之绊”... 真相永远只有一个“推理之绊”系列活动策划  一、活动背景:  “真相永远只有一个”,“ 除所有不可能...
学校总务主任述职报告   述职报告是各级机关、企事业单位和社会团体的工作人员向本单位的组织部门、上级领导机关或本单位员工陈...
万圣节朋友圈必备简短文案 万圣节朋友圈必备简短文案  在日常学习、工作或生活中,越来越多人会在闲暇时发表文案,文案用以展现自己...
母亲节发朋友圈的文案 关于母亲节发朋友圈的文案(精选390句)  随着社交平台的兴起,越来越多人青睐于在社交平台上发表文案...
萝岗区及黄埔区公交线网规划方... 萝岗区及黄埔区公交线网规划方案起止点经行路段萝岗演艺中心-联和开创大道、香雪路、水西路、开创大道、广...
天津工程职业技术学院就业质量... 天津工程职业技术学院就业质量年度报告  一、学院概况  天津工程职业技术学院是一所以工科为主的全日制...
酒店圣诞晚会活动策划方案 酒店圣诞晚会活动策划方案  为了确保事情或工作能无误进行,预先制定方案是必不可少的,方案的内容多是上...
商务谈判策划书 商务谈判策划书  一、什么是策划书  策划书即对某个未来的活动或者事件进行策划,并展现给读者的文本;...
新生迎新策划方案 2021新生迎新策划方案范文  为了确保我们的努力取得实效,时常需要预先开展方案准备工作,方案是从目...
有创意的生日策划方案 有创意的生日策划方案大全(通用8篇)  生日活动的举办,可以促进公司职员工的内部凝聚力和亲和力,加强...
大学生村官工作总结报告 2018年大学生村官工作总结报告范文  从20xx年11月16日来龙阳镇店子村工作,不觉间已过一月之...
实训报告 实训报告范文合集(通用12篇)  实训报告是指包含实训目的、实训环境、实训原理、实训过程、实训结果、...
自我成长的分析报告 自我成长的分析报告(精选11篇)  在现在社会,报告使用的频率越来越高,不同的报告内容同样也是不同的...
企业账户服务自查报告 企业账户服务自查报告范文  时间稍纵即逝,辛苦的工作已经告一段落了,回顾这一段时间存在的工作问题,是...