Mysql:常见问题

常见问题

    • 一、查询缓存和缓冲池
    • 二、为什么表数据删掉一半,表文件大小不变?
    • 三、为何选择B+Tree作为索引的数据结构?

一、查询缓存和缓冲池

1、缓冲池

  • 用于加速数据的修改和访问,通过将热点数据缓存在内存,最大限度的减少磁盘I/O
  • 默认大小为128M,Buffer Pool中数据以页为存储单位,其实现的数据结构是以页为单位的单链表
  • 由于内存的空间限制,Buffer Pool仅能容纳最热点的数据
  • Buffer Pool使用LRU算法淘汰非热点数据页

2、查询缓存和缓冲池的区别

  • 查询缓存是把缓存结果缓存起来,也就意味着只有相同的查询操作才会命中查询缓存,而且更新操作就会破坏缓存,因此Mysql的查询缓存命中率不高,在Mysql8.0中已经弃用了查询缓存
  • 缓冲池的作用是把数据页放到缓冲池中,这样在读取或修改数据的时候可以更新或者查找缓冲池中的数据,数据页中包含了很多行数据,即使这次没用到,下次也可能会用到
  • 缓冲池并不等于查询缓存,它们都是通过缓存的机制来提升效率,但缓冲池服务于数据库整体的I/O操作,而查询缓存服务于Sql查询和查询结果集的,因为命中条件苛刻,只要数据表发生变化,查询缓存就会失效

二、为什么表数据删掉一半,表文件大小不变?

1、innodb_file_per_table

  • on:每个InnoDB表数据存储在一个以.ibd为后缀的文件中
  • off:表的数据放在系统共享表空间,也就是跟数据字典放在一起
  • 建议将这个值设置为on,因为,一个表单独存储一个文件更容易管理,而且不需要这个表的时候,通过drop table命令,系统就会直接删除这个文件;而如果是放在共享表空间中,即使表删掉了,空间也是不会回收的

2、delete删表

  • Innodb只会把删除的数据标记为删除,磁盘文件的大小并不会缩小,如果之后要在这个位置再插入记录,这个记录可能会被复用
  • Innodb的数据是按页存储的,如果删掉了一个数据页的所有记录,整个数据页就可以被复用了
    记录的复用跟数据页的复用是不同的,记录的复用只限于符合范围条件的数据,而整个数据页被摘掉后,可以复用到任何位置
  • 如果用delete命令把整个表的数据删除,结果就是所有的数据页都会标记为可复用,但是磁盘上,文件不会变小,这些可以复用而没有被使用的空间,看起来就像是’空洞’
  • 不仅删除数据会造成空洞,插入数据也会造成空洞,数据如果是随机插入的,就可能造成索引的页分裂
  • 也就是说,经过大量增删改的表,都是可能存在空洞的,如果能把这些空洞去掉,就能达到收缩表空间的目的,而重建表就能达到这样的目的

3、重建表

alter table A engine = InnoDB;
会去除表A中的数据空洞,相当于drop表A,然后再按主键索引的顺序新建表A
Online DDL
允许表A向表B插入数据的过程中,对表A进行增删改

4、optimize table、analyze table、alter table这三种方式新建表的区别?

alter table t engine = InnoDB(也就是recreate)
analyze table t 其实不是重建表,只是对表的索引信息做重新统计,没有修改数据,这个过程加了MDL读锁
optimize table t 等于recreate + analyze

三、为何选择B+Tree作为索引的数据结构?

  • 数据库服务器有两种存储介质:硬盘和内存。内存是临时存储,硬盘是永久存储介质,索引只能放在磁盘中,因此磁盘的I/O次数决定了索引数据结构查询性能的好坏
  • 如果使用二叉树或者平衡二叉查找树,树的高度比较大,磁盘I/O操作多,影响查询效率
  • BTree和B+Tree都可以作为索引结构,也就是平衡的多路搜索树(m叉树),高度要远小于平衡二叉树的高度,两者的区别是:BTree所有的节点都会存储数据,B+Tree只有叶子节点会存储数据,非叶子节点只会存储索引,在进行范围查询的时候,B+Tree可以直接遍历叶子节点,BTree只能进行中序遍历

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

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

相关文章

STM32点灯大师(点了一颗LED灯,轮询法)

配置操作: 一、使用CubeMX配置到大致的操作 1.1 选择芯片 1.2 选择引脚(根据电路图) 1.3 配置gpio口 1.4 配置系统 1.5文件项目操作 最后就是点击 二、点击CubeMX生成的代码,并且修改代码 2.1 看看效果 2.2 写代码

Python 网络编程实践:从基础到进阶

目录 网络编程 一.IP地址简介 1. IP 地址的概念 1.1. IP 地址的表现形式 1.2. IP 地址的作用 2. 查看 IP 地址 3. 检查网络是否正常 4. 小技巧 二.端口和端口号 1. 什么是端口 2. 什么是端口号 3. 端口和端口号的关系 4. 端口号的分类 4.1. 知名端口号 4.2. 动…

【Unity学习笔记】第十四 Prefab 概念解惑

目录 1 prefab、prefab变体、prefab覆盖和prefab 嵌套2 connect 与unpack3 prefab到底是什么,它和gameobject又有什么区别?4 为什么要用prefab?5 代码动态加载prefab6 为什么我unity PrefabUtility.InstantiatePrefab() 得到的是null7 Prefab…

基于Springboot的租房网站

基于SpringbootVue的租房网站的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 房屋信息 交流论坛 房屋资讯 后台登录 用户管理 房屋类型管理 房屋信息管理 预…

关于权限的设计

首先系统权限,每个账号登录后,都需要知道这个账号允许访问哪些api,哪些数据权限(一般是指其他账号的一些数据) 这里就需要通过角色来关联。 --1.角色绑定菜单,每个菜单设计的时候包含了这个菜单会用到的所…

【成功案例】利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目

1.背景 2024年4月11日,某影视公司的服务器遭受了勒索软件攻击,随后向我司寻求帮助进行恢复。经过我司溯源排查,勒索组织通过一处用友NC资产进行入侵,攻击者利用国产工具横移了数小时后实施勒索。其中一台超融合(vcente…

监控员工上网有什么软件(2024三款受欢迎的员工上网监控软件盘点)

企业对员工上网行为的有效监管显得愈发重要。 既要确保工作效率与信息安全,又要尊重员工隐私并遵守相关法律法规,选择一款功能强大、合规且易于使用的员工上网监控软件至关重要。 本文将为您介绍2024年三款备受市场欢迎的员工上网监控软件,以…

20232801 2023-2024-2 《网络攻防实践》实践八报告

20232801 2023-2024-2 《网络攻防实践》实践八报告 1.实践内容 1.动手实践任务: 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者. 2.动手实践任务二:分析Crackme程序 在WinXP Attac…

LeetCode 每日一题 ---- 【1017.负二进制转换】

LeetCode 每日一题 ---- 【1017.负二进制转换】 1017.负二进制转换方法一:模拟进制转换推广:任意进制转换 1017.负二进制转换 方法一:模拟进制转换 我们平常做进制转换最常用的方法就是辗转相除法,下面的图示分别给出了普通的10…

pmp培训哪家好?高通过率的靠谱机构如何选择

PMP培训机构的选择本来就是一个需要有挑选的人才能顺利进行,所以如果你正好是PMP小白的话一定要抓紧补充一下自己在挑选机构方面的知识,理清自己的需求才能进行多维度的挑选,最后才能选择一个比较合适的机构。已经换证一次的老鸟路过&#xf…

Linux网络开发基础知识

一个网络服务器的简单实现 项目需求 实现回声服务器的客户端/服务器程序&#xff0c;客户端通过网络连接到服务器&#xff0c;并发送任意一串英文信息&#xff0c;服务器端接收信息后&#xff0c; 将每个字符转换为大写并回送给客户端显示。 eoch_client.c #include <arpa/i…

利用RunnerGo数据大屏强化测试管理与决策

测试平台中的数据大屏在提供实时监控、统计分析、效率提升、制定策略和促进沟通等方面具有重要的意义。它为测试团队提供更全面、更直观的数据支持&#xff0c;有助于提高测试质量和效率&#xff0c;减少风险&#xff0c;并加强团队协作和沟通。 数据大屏也是RunnerGo的核心特…

软考高级 | 系统架构设计师笔记(二)

三. 软件架构设计 3.1 概述 a 定义 软件或计算机系统的软件架构是该系统的一个&#xff08; 或多个&#xff09; 结构&#xff0c; 而结构由软件元素、 元 素的外部可见属性及它们之间的关系组成。 软件系统架构是关于软件系统的 结构、 行为和属性 的高级抽象。 指定…

【车辆管理】车辆位置监控管理方案

车辆位置监控管理方案 位置管理模块&#xff0c;实现管理车辆基于位置的管理功能。包括实时位置追踪、历史轨迹回放、电子围栏配置等功能。模块关键功能如下&#xff1a; 1、实时位置调度 应用公网的无线传输作为数据传输的载体&#xff0c;真正地实现对车辆位置的全天候实时…

OLED(SSD1306+I2C协议显示屏模块)

工具 1.Proteus 8 仿真器 2.keil 5 编辑器 原理图 讲解 简介 OLED&#xff08;Organic Light-Emitting Diode&#xff09;显示屏&#xff0c;即有机发光二极管显示屏&#xff0c;是一种新型显示技术。它的工作原理是通过电流驱动有机材料发光&#xff0c;无需背光灯&#x…

MyBatis 插件介绍及应用

MyBatis 插件介绍及应用 MyBatis 是一个持久层框架&#xff0c;它允许开发者自定义 SQL 语句并将其映射到 Java 对象中。MyBatis 提供了一种灵活的数据库操作方式&#xff0c;但随着项目的复杂度增加&#xff0c;一些通用功能如分页、缓存、事务管理等可能需要重复编写。为了解…

【网络原理】IP协议的地址管理和路由选择

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

uniapp-vue3-wechat:基于uniapp+vue3仿微信app聊天实例(H5+小程序+App端)

uni-vue3-wchat&#xff1a;基于uni-appvue3pinia2高仿微信app聊天模板。 原创基于最新跨端技术uni-appvue3.xpinia2vite4uv-ui构建三端仿微信app界面聊天实例。实现编辑框多行消息/emoj混合、长按触摸式仿微信语音面板、图片/视频预览、红包/朋友圈等功能。支持编译到H5小程序…

unity3d使用3D WebView播放网页中的视频

Unity2021.3.35f1&#xff0c;硬件ESP32-Cam&#xff0c;3D WebView插件 1.新建工程&#xff0c;导入3D WebView for Winfows和3D WebView for Android 2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo 3.修改Canvas的Render Mode为Screen Space-Camera&am…

Spark持久化、broadcast广播变量和accumulator累加器

持久化操作 什么是持久化&#xff0c;为什么要持久化 Spark中最重要的功能之一是跨操作在内存中持久化&#xff08;或缓存&#xff09;数据集。当您持久化RDD时&#xff0c;每个节点将其计算的任何分区存储在内存中&#xff0c;并在该数据集&#xff08;或从该数据集派生的数…
最新文章