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

相关推荐
Decay__3 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
小徐不徐说7 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场8 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__9 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁10 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk11 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW11 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB11 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_11 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室12 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库