聊聊mysql

news2024/12/28 22:03:33

记录那些坑
本文会持续更新,陆续更新有关mysql技术内幕、实战优化、面试技巧。

文章目录

  • 前言
  • 索引
    • BTree之聚集索引
    • BTree之辅助索引
    • BTree之联合索引
    • BTree之覆盖索引
  • 使用到的工具
    • 1、py_innodb_page_info工具
    • 2、hexdump工具
  • 总结


前言

重中之重的MySql数据库

mysql数据库不仅在工作中经常使用,面试中也是必问的内容。本文主要内容参考“mysql技术内幕”一书。


提示:以下是本篇文章正文内容,下面案例可供参考

索引

数据库要想查的快,索引得利用好。
数据库要想入的快,索引太多可不好。
mysql中索引类型有:BTree,Full Text,Hash,RTree。

BTree之聚集索引

聚集索引:ID索引
ID索引使用BTree结构,每个表仅且只有一个!!!,(即使没有创建主键,mysql会默认创建一个隐藏列作为ID索引)
BTree高度:
BTree中节点存储键值和地址指针,叶子结点存储键值、指针、数据。
物理上不一定是顺序的,逻辑上是顺序的(通过指针链接)。
在这里插入图片描述

BTree之辅助索引

辅助索引就是主键以外的 单个字段的BTree索引类型的了。
辅助索引 叶子结点书签:聚集索引键。
当通过辅助索引来寻找数据时,InnoDB存储引擎会遍历辅助索引并通过叶级别的指针获得指向主键索引的主键,然后再通过主键索引来找到一个完整的行记录。
在这里插入图片描述

BTree之联合索引

将多个字段联合一起做索引,索引结构如下:
在这里插入图片描述
根据图示需要清楚,键值是个多元组,多元组中是按照字段的顺序进行排列的。所以,在进行查询时,如果没有按照自从向右的字段查询,就会打破联合索引,使之失效!!!

注意:如果创建联合索引(a,b,c);如果查询a和b order by c ,就可以使用到联合索引; 如果查询a 直接order by c,就不会使用到索引,因为(a,c)并没有排序

BTree之覆盖索引

覆盖索引常见的场景为:直接使用索引查询出索引键值、主键的内容,根据索引的字段进行范围或非范围的统计。
判断是否为覆盖索引,使用explain,查看Extra字段,如果为Using index,就表示走了。
案例:(t表,a为主键,c为辅助索引,cd为联合索引,b无索引)

  • explain SELECT a from t where c = 1 ; 为覆盖索引
  • explain SELECT count(*) from t ; 为覆盖索引
  • explain SELECT count(b) from t ; 全表扫描
  • explain SELECT count(b) from t where c >10 ; 非覆盖索引,先走c的辅助索引然后走主键索引。
  • explain SELECT count(*) from t where d > 0 and d<10 ; 为覆盖索引

使用到的工具

1、py_innodb_page_info工具

首先 git 下载 https://gitee.com/andy_yyf/py_innodb_page_info

clone到合适位置。

本地需要有python2 (一般服务器自带)

执行命令:python py_innodb_page_info.py /{对应的path}/t.ibd -v

2、hexdump工具

在Windows操作系统下,可以选择通过程序UltraEdit打开该二进制文件。在Linux环境下,使用命令hexdump-C-v mytest.ibd>mytest.txt。这里将结果重定向到了文件mytest.txt,打开mytest.txt文件,找到如下内容:xxxx

总结

提示:

本文仅仅简单说明了有关mysql相关内容,如深入理解可读相关层面的书籍。

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

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

相关文章

ARM功耗管理之睡眠锁

安全之安全(security)博客目录导读 思考&#xff1a;什么是睡眠锁&#xff1f;什么是唤醒源&#xff1f;什么是组合唤醒源&#xff1f; Kernel wakelocks的功能&#xff1a; 1&#xff09;允许driver创建wakelock以阻止睡眠、注销wakelock以允许睡眠。 2&#xff09;wake_lo…

SpringBoot新手快速入门系列教程7:基于Redis的一个简单存取数据的例子

我的教程都是亲自测试可行才发布的&#xff0c;如果有任何问题欢迎留言或者来群里我每天都会解答。 新手可能有这样的疑问&#xff0c;有了数据库的存取方式&#xff0c;我们为什么还要使用Redis这种缓存数据库读取方式呢&#xff1f; 原因主要有以下几点&#xff1a; 1. 性能…

本地部署,MODNet 背景去除大模型

目录 摘要 引言 MODNet 架构 关键组件 技术原理 本地部署 运行结果 结论 GitHub - ZHKKKe/MODNet: A Trimap-Free Portrait Matting Solution in Real Time [AAAI 2022]A Trimap-Free Portrait Matting Solution in Real Time [AAAI 2022] - ZHKKKe/MODNethttps://gith…

在Linux上导出NFS共享---网络文件系统

目录 一、NFS介绍 二、NFS 所需要的服务 三、搭建NFS服务器共享文件到客户端 在虚拟机129上配置&#xff1a; 在虚拟机135上配置 测试 四、autofs自动挂载 1、安装软件启动 2、编写 /etc/auto.master,在里面添加内容如下 3、编写 /etc/auto.nfs&#xff0c;其内容如下 …

怎么提高音频的播放速度?可以提高音频播放速度的四种方法推荐

怎么提高音频的播放速度&#xff1f;提高音频的播放速度是一种有效的策略&#xff0c;可以显著节省时间和提升信息获取的效率。随着信息量不断增加和学习需求的多样化&#xff0c;快速播放音频已成为许多人在日常生活和工作中的常见做法。这种方法不仅可以用于提高学习效率&…

基于 JSP 的网络招标系统设计与实现

点击下载源码 基于jsp的网上招标系统设计与实现 摘要 从本世纪初&#xff0c;互联网开始加速发展&#xff0c;各种创新型应用和互联网新概念不断出现&#xff0c;例如搜索引擎、电子商务、博客、维基百科、RSS、3G、web2.0、长尾理论等。这些应用和概念与知识管理都有着或多或少…

视频融合共享平台视频共享融合赋能平台数字化升级医疗体系

在当前&#xff0c;医疗健康直接关系到国计民生&#xff0c;然而&#xff0c;由于医疗水平和资源分布不均&#xff0c;以及信息系统老化等问题&#xff0c;整体医疗服务能力和水平的提升受到了限制。视频融合云平台作为数字医疗发展的关键推动力量&#xff0c;在医疗领域的广泛…

Qt:19.浮动窗口/子窗口(子窗口介绍、代码方式创建子窗口、设置子窗口标题、为子窗口添加控件、设置子窗口停靠位置)

目录 1.子窗口介绍&#xff1a; 2.代码方式创建子窗口&#xff1a; 3.设置子窗口标题&#xff1a; 4.为子窗口添加控件&#xff1a; 5.设置子窗口停靠位置。 1.子窗口介绍&#xff1a; 在 Qt 中&#xff0c;可以创建和管理子窗口&#xff08;子窗口体&#xff09;以实现多窗…

pandas个性化求和及报错处理

报错内容&#xff1a; ValueError: (Lengths must match to compare, (19,), (1,)) 案例&#xff0c;自定义数据集&#xff0c;并求每个顾问有成单日的近三天累计成交金额&#xff0c;如下&#xff1a; 求近3天累计成交额&#xff1a; import pandas as pd from datetime im…

跟着李沐学AI:Softmax回归

回归 vs 分类 回归用于估计一个连续值 分类用于预测一个离散类别 两个经典的数据集&#xff1a; MNIST数据集&#xff1a; MNIST&#xff08;Modified National Institute of Standards and Technology&#xff09;数据集是一个广泛应用于机器学习和深度学习领域的手写数字…

【计算机组成原理 | 第二篇】计算机硬件架构的发展

目录 前言&#xff1a; 冯诺依曼计算机架构 现代计算机架构&#xff1a; 总结&#xff1a; 前言&#xff1a; 在当今数字化时代&#xff0c;计算机硬件不仅是技术进步的见证者&#xff0c;更是推动这一进步的基石。它们构成了我们日常生活中不可或缺的数字生态系统的核心&a…

基于FPGA的图像边缘检测(OV5640)

一、简介 1.应用范围 边缘主要存在于图像中目标与目标之间&#xff0c;目标与背景之间&#xff0c;区域与区域之间。 边缘检测的目的就是找到图像中亮度变化剧烈的像素点构成的集合&#xff0c;表现出来往往是轮廓。如果图像中边缘能够精确的测量和定位&#xff0c;那么&…

<数据集>水稻叶片病害识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1448张 标注数量(xml文件个数)&#xff1a;1448 标注数量(txt文件个数)&#xff1a;1448 标注类别数&#xff1a;3 标注类别名称&#xff1a;[BrownSpot,RiceBlast,BacterialBlight] 序号类别名称图片数框数1Rice…

Python类与对象02:继承

1、什么是继承 上一节中我们介绍了类与对象的用法。类可以看作是一种程序内的设计图纸&#xff0c;而对象则是基于这个图纸制造出来的实体。这个过程类似于现实中的设计表格和填写表格。 现在假设你是一名设计师&#xff0c;需要迭代一款新产品。你有两个选择&#xff1a; 在…

MySQL 数据库(基础)- SQL

SQL通用语法 SQL通用语法 SQL语句可以单行或者多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。 注意&#xff1a;空格和缩进的个数是没有限制的&#xff0c;可以是 “一个” 也可以是 “多个”。MySQL数据库的SQL语句不区分大小写&#xff0c;…

【Django项目】基于Python+Django+MySQL的音乐网站系统项目

功能介绍 首页&#xff1a;歌曲分类、歌曲搜索、热门歌曲、热门下载、新歌推荐 歌曲排行&#xff1a;歌曲分类、分页功能 用户板块&#xff1a;用户登陆/注册、播放历史 歌曲详情&#xff1a;歌曲播放、当前播放列表、歌曲点评、歌曲播放插件、下载歌曲 系统后台&#xff1a;歌…

MacOS 通过Docker安装宝塔面板搭建PHP开发环境

1、docker拉取ubuntu系统 docker pull ubuntu2、运行容器 docker run -i -t -d --name bt -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 -p 6379:6379 --privilegedtrue -v /Users/oi/Sites:/www/wwwroot ubuntu-v 后的 /Users/oi/Sites 代表…

redis redisson(仅供自己参考)

redis 通过setnx实现的分布式锁有问题 如图&#xff1a; 解决的新的工具为&#xff08;闪亮登场&#xff09;&#xff1a;redisson redisson可重入锁的原理 实现语言lua&#xff1a; 加锁实现脚本语言&#xff1a; 释放锁的脚本语言&#xff1a; 加锁的lua -- 首先判断这个锁…

Ubuntu安装MATLAB

一、准备工作 下载MATLAB安装文件&#xff1a; 访问MathWorks官方网站&#xff08;MathWorks官网&#xff09;&#xff0c;下载适用于Linux的MATLAB安装文件。这通常是一个.iso镜像文件或.zip压缩文件。请注意选择与Ubuntu版本相匹配的MATLAB版本。创建安装目录&#xff1a; 打…

VMware安装Ubuntu以及利用vscode远程Ubuntu

一、VMware安装Ubuntu &#xff08;1&#xff09;VMware安装Ubuntu主要参考此文VMware虚拟机安装Ubuntu22.04图文教程&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09;。 &#xff08;2&#xff09;VMware密钥参考此文24年VMware 17密钥(附下载链接&#…