Mysql优化原理分析

一、存储引擎

1.1 MyISAM

一张表生成三个文件

  • xxx.frm:存储表结构
  • xxx.MYD:存储表数据
  • xxx.MYI:存储表索引

索引文件和数据文件是分离的(非聚集)

select * from t where t.col1 = 30;

先去t.MYI文件查找30对应的索引所在磁盘文件地址,去t.MYD文件找出对应磁盘文件地址的数据

1.2 Innodb 

一张表生成两个文件

  • xxx.frm:存储表结构
  • xxx.ibd:存储索引和数据

索引和数据(索引行对应的所有列数据)不是分离的(聚集) 

二、索引

索引是帮助MySQL高效获取数据的排好序数据结构

2.1 索引数据结构

  • 二叉树

  • 红黑树(二叉平衡树)
  • Hash表

对索引的key进行一次hash计算就可以定位出数据存储的位置

等值查询效率高(=,IN),不能排序,不能进行范围查询,hash冲突问题

  • B-Tree

节点具有相同的深度,叶节点的指针为空

所有索引元素不重复

节点中的数据所有从左到右递增排列

数据有序,范围查询

  •  B+Tree(B-Tree变种)

非叶子节点不存储data,只存储索引(冗余),可以放更多的索引

叶子节点包含所有的索引字段

叶子节点用指针(双向指针)连接,提高区间访问的性能

MySQL加载的时候,一二层叶子数据(冗余索引)加载在内存中,底层叶子数据存储在磁盘 

假设索引大小为bigint(8b),一个底层叶子节点数据大小(1kb),MySQL默认叶节点大小(16384kb),索引指针大小(6kb),那么一棵B+Tree可以存储的索引元素:(16384/6)*(16384/6)*16

 2.2 联合索引

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Terraform学习】Terraform模块基础操作(Terraform模块)

本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

Python爬虫框架之Selenium库入门:用Python实现网页自动化测试详解

概要 是否还在为网页测试而烦恼?是否还在为重复的点击、等待而劳累?试试强大的Selenium!让你的网页自动化测试变得轻松有趣! 一、Selenium库到底是什么? Selenium 是一个强大的自动化测试工具,它可以让你直…

单片机(二)使用位移 让灯亮

一:硬件电路 P2 口: P2.0~ P2.7 是这些 I0 口 LED 阳极接 电源 , P20 口 为低电平 可以让 LED灯 亮 二:软件实现部分 两种 ① 通过循环 来展示从左 到右 #include "reg52.h"#define LED_PORT P2 // 定义单片机的P2端…

5G工业网关赋能救护车远程监控,助力高效救援

智慧医疗是传统医疗业发展进步的必要趋势,医疗设备通过物联网技术的应用实现智能化转型。通过5G工业网关将医疗器械等设备的数据采集再经过专网传输到医疗系统中,实现医疗设备间的数据共享和远程监控,能够帮助医疗行业大大提高服务质量和管理…

Unity——资产包(Asset Bundles)

对很多单机游戏来说,游戏的所有资源往往是与游戏本体一同发布的,资源部西药独立出来。但对于大型商业项目来说,游戏产品还需要再发布之后进行维护和更新,这就引出了Unity资产包的概念 一、资产包(Asset Bundles&#x…

Linux Input子系统

一、基本概念 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。本质属于字符设备。 1. input子系统结构如下: input 子系统分为 input 驱动层、input 核心层、input 事件处理层&…

[Linux]进程

文章目录 1. 进程控制1.1 进程概述1.1.1 并行和并发1.1.2 PCB1.1.4 进程状态1.1.5 进程命令 1.2 进程创建1.2.1 函数1.2.2 fork() 剖析 1.3 父子进程1.3.1 进程执行位置1.3.2 循环创建子进程1.3.3 终端显示问题1.3.4 进程数数 1.4 execl和execlp函数1.4.1 execl()1.4.2 execlp(…

什么是浏览器缓存(browser caching)?如何使用HTTP头来控制缓存?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 浏览器缓存和HTTP头控制缓存⭐ HTTP头控制缓存1. Cache-Control2. Expires3. Last-Modified 和 If-Modified-Since4. ETag 和 If-None-Match ⭐ 缓存策略⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击…

攻防世界-web-fakebook

1. 题目描述 打开链接,这样一个界面 貌似没啥特殊的。。。没关系,我们每个页面都点击一下 login页面:一个简单的登录页面 join界面:不出意外,这应该是一个注册界面 目前,我们什么都不做,能获…

Jmeter性能综合实战 —— 签到及批量签到

提取性能测试的三个方面:核心、高频、基础功能 签 到 请 求 步 骤 1、准备工作: 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 (1)创建线程组 &#xf…

多线程使用HashMap,HashMap和HashTable和ConcurrentHashMap区别(面试题常考),硬盘IO,顺便回顾volatile

一、回顾💛 谈谈volatile关键字用法 volatile能够保证内存可见性,会强制从主内存中读取数据,此时如果其他线程修改被volatile修饰的变量,可以第一时间读取到最新的值。 二、💙 HashMap线程不安全没有锁,HashTable线程…

【Kafka】Kafka Stream简单使用

一、实时流式计算 1. 概念 一般流式计算会与批量计算相比较。在流式计算模型中,输入是持续的,可以认为在时间上是无界的,也就意味着,永远拿不到全量数据去做计算。同时,计算结果是持续输出的,也即计算结果…

跳槽面试:如何转换工作场所而不失去优势

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

【数学建模】清风数模正课7 多元线性回归模型

多元线性回归分析 回归分析就是,通过研究自变量X和因变量Y的相关关系,来解释Y的形成机制,从而达到通过X去预测Y的目的。 所以回归分析需要完成三个使命,首先是识别重要变量,其次是判断正负相关,最后是估计…

【大数据知识】大数据平台和数据中台的定义、区别以及联系

数据行业有太多数据名词,例如大数据、大数据平台、数据中台、数据仓库等等。但大家很容易混淆,也很容易产生疑问,今天我们就来简单聊聊大数据平台和数据中台的定义、区别以及联系。 大数据平台和数据中台的定义 大数据平台:一个…

Gradio入门(1)输入输出、表格、文本高亮

本文将会介绍gradio的入门使用,并结合大模型(LLM),给出三个使用例子。   Gradio 是通过友好的 Web 界面演示机器学习模型的最快方式,以便任何人都可以在任何地方使用它。其官网网址为:https://www.gradio…

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

Qt 查找文件夹下指定类型的文件及删除特定文件

一 查找文件 bool MyXML::findFolderFileNames() {//指定文件夹名QDir dir("xml");if(!dir.exists()){qDebug()<<"folder does not exist!";return false;}//指定文件后缀名&#xff0c;可指定多种类型QStringList filter("*.xml");//指定…

蓝蓝设计ui设计公司作品案例-中节能现金流抗压测试软件交互及界面设计

中国节能是以节能环保为主业的中央企业。中国节能以生态文明建设为己任&#xff0c;长期致力于让天更蓝、山更绿、水更清&#xff0c;让生活更美好。经过多年发展&#xff0c;中国节能已构建起以节能、环保、清洁能源、健康和节能环保综合服务为主业的41产业格局&#xff0c;成…

数据结构 day6

1->xmind 2->递归实现程序&#xff1a;输入一个数&#xff0c;输出该数的每一位