mysql进阶学习 | DAY 14

存储引擎

体系结构

  • 连接层

  • 服务层

  • 引擎层

  • 存储层

存储引擎 表类型

查看引擎 查看建表语句

指定存储引擎 ENGINE

SHOW engins

InnoDB

默认存储引擎

  • 遵循ACID模型 支持事务

  • 行级锁 提高并发访问性能

  • 支持外键 FOREIGN KEY约束 保证数据完整性和正确性

对应文件 xxx.ibd 表空间文件{结构 数据 索引}

应用:对事务完整性比较高 在并发条件下要求数据的一致性

MyISAM

早期默认存储引擎

  • 不支持事务 不支持外键

  • 支持表锁 不支持行锁

  • 访问速度快

xxx.MYD(数据) xxx.MYI (索引) xxx.sdi(表结构)

应用:数据操作以读取和插入为主 很少更新或删除 对事务完整性并发性瑶琴斌不是很高

Memory

存储在内存 只能作为临时表或缓存使用

  • 内存存放

  • hash索引(默认)

应用:临时表或缓存 对表的大小有限制

索引

帮助mysql高效获取数据的数据结构

无索引 全表扫描

索引

  • 优点 调高检索效率

  • 缺点 降低增删改的效率

索引结构

在存储引擎层实现 不同引擎存储不同结构

  • B+Tree索引 默认

  • Hash索引

  • R-Tree 空间索引

  • FUll-text 全文索引

B树 多路平衡查找树

度数 一个节点子节点的个数 每个节点最多存储n个指针 n-1个值

B+树

  • 所有元素都会出现在叶子节点

  • 叶子节点形成一个单向链表

在mysql中 优化了B+树 增加一个指向相邻叶子节点的链表指针 形成了带有顺序指针的b+树 提高区间访问性能

Hash索引
  • 不支持范围查找

  • 无法利用索引

索引分类

  • 主键索引 primary

  • 唯一索引 uniquee

  • 操常索引 快速定位数据

  • 全文索引 fulltext

innodb存储引擎 根据索引存储形式分为

聚焦索引: 将数据存储与索引放到了一起 索引结构的叶子节点保存了行数据 必须有而且只有一个

二级索引 :数据与索引分开存储 索引结构的叶子节点关联的是对应的主键

回表查询:先走二级索引找到主键值 然后走聚焦索引找到row

创建索引:create [unique | fulltext] index index_name on table_name (index_col_name...);

一个索引关联多个字段 称为 联合索引

查看索引: SHOW index from table_name

删除索引: DROP index index_name on table_name

性能分析

  • 明确 sql 执行频率 增删改查所占的频率

    show [session|globale] sattus like 'com_______';服务器状态信息

  • 慢查询日志

    • 记录所有执行时间超过指定参数的sql语句的日志

    • 慢查询日志默认没有开启 需要在配置文件配置 /etc/my.cnf 添加 slow_query_log=1 long_query_time=2

    • 查询是否开启 show variables like 'slow_query_log';

    • 只会记录超过预定时间的操作才回记录

  • profile 详情

    • show profiles 查看耗时都去了哪里

    • SELECT @@have_profiling参数查看是否支持profile操作

    • set profiling=1开启

    • 查看指定query_id 的sql语句各个阶段的耗时 show profile for query_id;

    • 查看cpu使用情况 show profile cpu for query_id

  • explain执行计划

    • 在任意select语句之前添加关键字 explain

    • id 表示查询语句中执行select自居或者是操作表的顺序 id相同 按照从上往下执行 如果不同 数值越大先执行

    • select_type 表示select的类型 simple(简单查询)primary(主查询 外层查询) union(union中的第二个或者后面的查询语句)subquery(select/where 之后包含了子查询)

    • type 连接类型

    • pssible_key 显示可能应用在这张表上的索引

    • key 实际使用的索引

    • key_len 索引中使用的字节数

    • rows 预估值 执行查询的行数

    • filtered 行数占需要读取的行数的百分比

索引使用

  • 最左前缀法则

出现了联合索引 从索引的最左列开始查询 并且不跳过索引中发的列

  • 索引列运算

不要在索引列上进行运算 索引将失效

  • 字符串索引添加引号

否则索引将失效

  • 模糊查询

尾部模糊 不会失效 头部模糊 索引失效

  • or连接条件

or前条件中有索引 后面没有索引 那么涉及的索引不会用到

  • 覆盖索引

查询使用了索引 并且需要返回的列 在该索引中已经全都被找到

出现 using index condition 使用了索引 但是需要回表查询

出现 using where using index 使用了索引 不需要回表查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust: reqwest库示例

一、异步处理单任务 1、cargo.toml [dependencies] tokio { version "1.0.0", features ["full", "tracing"] } tokio-util { version "0.7.0", features ["full"] } tokio-stream { version "0.1" }…

抖音爬虫批量视频提取功能介绍|抖音评论提取工具

抖音爬虫是指通过编程技术从抖音平台上获取视频数据的程序。在进行抖音爬虫时,需要注意遵守相关法律法规和平台规定,以确保数据的合法获取和使用。 一般来说,抖音爬虫可以实现以下功能之一:批量视频提取。这个功能可以用于自动化地…

大数据-数据可视化-环境部署vue+echarts+显示案例

文章目录 一、安装node.js1 打开火狐浏览器,下载Node.js2 进行解压3 配置环境变量4 配置生效二、安装vue脚手架1 下载vue脚手架,耐心等待。三、创建vue项目并启动1 创建2 启动四、下载echarts.js与axios.js到本地。五、图表显示demo【以下所有操作均在centos上进行】 一、安…

使用C#+NPOI进行Excel处理,实现多个Excel文件的求和统计

一个简易的控制台程序,使用C#NPOI进行Excel处理,实现多个Excel文件的求和统计。 前提: 待统计的Excel格式相同统计结果表与待统计的表格格式一致 引入如下四个动态库: 1. NPOI.dll 2. NPOI.OOXML.dll 3. NPOI.OpenXml4Net.dll …

Python爬虫技术详解:从基础到高级应用,实战与应对反爬虫策略【第93篇—Python爬虫】

前言 随着互联网的快速发展,网络上的信息爆炸式增长,而爬虫技术成为了获取和处理大量数据的重要手段之一。在Python中,requests模块是一个强大而灵活的工具,用于发送HTTP请求,获取网页内容。本文将介绍requests模块的…

Java设计模式 | 简介

设计模式的重要性: 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 这个术语由埃里希 伽玛(Erich Gamma)等人在1…

在项目中应用设计模式的实践指南

目录 ✨✨ 祝屏幕前的您天天开心,每天都有好运相伴。我们一起加油!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 引言 一. 单例模式(Singleton Pattern) 1、实现单例模式的方式 1…

Python集合详细教程

Python集合是一种无序、可变的数据类型,它是由一组不重复的元素组成的。集合中的元素必须是可哈希的,即不可变的,例如数字、字符串、元组等。 创建集合 可以使用花括号{}或set()函数来创建集合。 复制代码# 使用花括号创建集合 set1 {1, …

【Leetcode】2583. 二叉树中的第 K 大层和

文章目录 题目思路代码结果 题目 题目链接 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。 注意,如果两个节点与根…

东南亚印度越南印尼菲律宾媒体海外宣发稿公司怎么找?跨境出海推广新闻营销资源渠道一览

【本篇由言同数字科技有限公司原创】随着全球化和互联网的普及,品牌跨境海外推广在东南亚地区变得越来越重要。印度、越南、印尼和菲律宾作为东南亚地区的重要经济国家,其崛起的中产阶级和不断增长的消费者市场成为国际品牌实现成功的理想目标。本文将探…

eureka 简介和基本使用

Eureka 是Netflix开发的服务发现框架,是Spring Cloud微服务架构中的一部分。它主要用于微服务架构中的服务注册与发现。Eureka由两部分组成:Eureka Server 和 Eureka Client。获取更详细的信息可以访问官网,如下图: Eureka Server…

【Docker 的安装:centos】

文章目录 1 :peach:各版本平台支持情况:peach:2 :peach:CentOS 安装:peach:2.1 :apple:安装依赖:apple:2.2 :apple:安装 Docker:apple:2.3 :apple:实战经验:apple:2.3.1 :lemon:Docker 镜像源修改:lemon:2.3.2 :lemon:Docker 目录修改:lemon: 1 🍑各版本平台支持情况…

How to run this world?

Run your organization effectively and keep everyone aligned with so many departments focused on different responsibilities——Talent, Finance, Operations, Sales, Marketing, Technology. But technology should be a key component in the business’s success, no…

Linux设备模型(二) - kset/kobj/ktype APIs

一,kobject_init_and_add 1,kobject_init_and_add实现 /** * kobject_init_and_add() - Initialize a kobject structure and add it to * the kobject hierarchy. * kobj: pointer to the kobject to initialize * ktype: p…

探索无限:Sora与AI视频模型的技术革命 - 开创未来视觉艺术的新篇章

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

Unity实现帧序列

一、目的 1.想实现序列帧效果 自己使用Animation一直无法实现动画播放效果 二、参考 1. Unity序列帧动画——Sprite图片集制作UI动画_unity 序列帧动画图集-CSDN博客 结果:很好用,能实现效果 三、实操 新建Image,增加Animator组件&#x…

【数据结构】排序(1)

目录 一、概念: 二、直接插入排序: 三、希尔排序: 四、直接选择排序: 五、堆排序: 六、冒泡排序: 一、概念: 排序的概念: 使一串记录,按照其中的某个或某些关键字…

【电路笔记】-RC放电电路

RC放电电路 文章目录 RC放电电路1、概述2、RC放电电路3、RC放电电路示例当电压源从完全充电的 RC 电路中移除时,电容器 C 将通过电阻 R 放电。 1、概述 RC 放电电路利用电阻器-电容器组合的固有 RC 时间常数以指数衰减率对电容器进行放电。 在之前的 RC 充电电路教程中,我们…

向量的组成

向量是有序的一维数组,其中包含多个标量元素。每个元素都有一个索引,表示其在向量中的位置。在数学表示中,我们通常用小写粗体字母表示向量,如 v。 关于向量、张量、标量与矩阵的关系可以参见另一篇文章:线性代数&…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac,可以直接点击下载的dmg安装包,安装升级。第一次启动mounty,你需要接受一系列…