【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、全日志)

相关推荐
IvorySQL4 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃5 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo80975 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat5 小时前
MySQL回表机制解析与优化策略
数据库·sql
Cry丶5 小时前
遗留系统数据迁移实战(九):区域编码迁移与补偿接口设计
mysql·数据治理·数据迁移·区域编码·补偿接口·组织区域
circuitsosk5 小时前
向量数据库选型与性能压测:Milvus、Pinecone、Chroma在真实业务下的对比
数据库·python·pinecone·milvus·向量数据库·chroma
影寂ldy5 小时前
SQL 索引(Index)完整笔记
数据库·笔记·sql
切糕师学AI5 小时前
从压缩到查询:PostgreSQL中JSON数据的存储与处理实践
数据库·postgresql·json
渣渣盟5 小时前
当 Redis 写入成为性能瓶颈时,如何利用 异步批量 Sink 将吞吐量从 1w QPS 提升到 10w+?
数据库·redis·php
SelectDB5 小时前
Apache Doris 2026 Roadmap:AI 成为主流负载后数据基础设施的演进方向
数据库