【MySQL】2026总结(二)

文章目录

    • [一. 存储引擎](#一. 存储引擎)
      • [1.1 MySQL体系结构](#1.1 MySQL体系结构)
      • [1.2 存储引擎简介、特点、存储引擎选择](#1.2 存储引擎简介、特点、存储引擎选择)
      • [1.3 MySQL的启动、连接、关闭(Linux)](#1.3 MySQL的启动、连接、关闭(Linux))
    • 二、索引
      • [2.1 索引结构与常见索引](#2.1 索引结构与常见索引)
      • [2.2 索引分类与理解](#2.2 索引分类与理解)
      • [2.3 索引的语法:创建、查看、删除](#2.3 索引的语法:创建、查看、删除)
      • [2.4 查询数据库几大操作频率的语句](#2.4 查询数据库几大操作频率的语句)
    • 三、慢查询日志

一. 存储引擎

1.1 MySQL体系结构

1.2 存储引擎简介、特点、存储引擎选择

  1. 存储引擎是针对表的;不是针对数据库;即:同一数据库中的不同表,可以指定不同存储引擎。
  2. 存储引擎的指定:在创建表时,ENGINE关键字指定
sql 复制代码
create table name(
......
)ENGINE = INNODB 
  1. 查询当前数据库所支持的存储引擎
sql 复制代码
show engines;

InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认 的MySQL存储引擎。

特点

DML操作遵循ACID模型,支持事务;

行级锁,提高并发访问性能;

支持外键foreign key 约束,保证数据的完整性、正确性。

文件 :xxx.idb;idb代表的是表名,innodb引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)数据和索引。参数:innodb_file_per_table 决定多张表和一张表共用这样的表空间文件。

1.3 MySQL的启动、连接、关闭(Linux)

sql 复制代码
# 启动mysql服务
systemctl start mysqld
# 如果使用rpm安装的mysql ,登录时,需要输入初始化密码;下面是查询密码:
grep 'temporary password' /var/log/mysqld.log
# 登录连接
mysql -u root -p

二、索引

索引(index)帮助MySQL高效获取数据的数据结构(有序)

优势 劣势
提高数据检索的效率,降低数据库的IO成本 索引列也是要占用空间的
通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗 索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行insert、update、delete时,效率降低

2.1 索引结构与常见索引

MySQL的索引是在存储引擎层实现的;不同的存储引擎有不同的结构,主要包含如下几种:

索引结构 描述
B+Tree索引 最常见的索引类型,大部分引擎都支持B+Tree索引
hash索引 底层数据结构是用哈希表实现的,只有精确匹配索引列的查询才有效,不支持范围查询
R-tree(空间索引) 空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少
Full-text(全文索引) 是一种通过建立倒排索引,快速匹配文档的方式。类似于Lucene,solr,Es

2.2 索引分类与理解

在InnoDB存储引擎中,根据索引的存储形式,又可分为以下两种:

聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引
  • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
  • 如果表没有主键,或没有合适的唯一索引,则Innodb会自动生成一个rowid作为隐藏的聚集索引。

2.3 索引的语法:创建、查看、删除

sql 复制代码
# 创建索引
create [unique | fulltext] index index_name on table_name(index_col_name,...);
# 查看索引
show index from table_name;    #  结果展示为表格
show index from table_name \G; # 会以文档的形式展示
# 删除索引
drop index index_name on table_name

2.4 查询数据库几大操作频率的语句

sql 复制代码
show global status like 'Com_______';

三、慢查询日志

慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。MySQL的慢查询日志默认没有开启。查询其状态:

sql 复制代码
show variables like 'slow_query_log';

需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

txt 复制代码
# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志。
long_query_time=2

索引失效、SQL定位及调优(慢查询日志、mysql profile、全日志)

相关推荐
九皇叔叔39 分钟前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
橙子家1 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_962066493 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext3 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
数字新视界5 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..5 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
超兔一体云6 小时前
MySQL索引优化实战——从慢查询到索引调优
后端·mysql
这个DBA有点耶7 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_962074817 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_962073817 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql