当前位置: 首页 > news >正文

mysql闲谈

如何定位慢查询
1、测试环境压测时,有的接口非常慢,响应时间超过2秒以上。当时系统部署了运维的监控系统Skywalking,在展示报表中可以看到是哪儿个接口慢,可以看到SQL具体执行时间。
2、如果没有类似的监控系统,在Mysql中也提供了慢日志查询功能,在mysql系统配置文件中开启慢日志的功能,设置超过多少时间记录到一个日志文件中,我记得配置的是2s,只要sql执行时间超过2s就会记录到日志文件中。

explain type
null(没有使用到表)、system(mysql内置表)、const(根据主键查询)、eq_ref(根据主键索引查询或唯一索引查询)、ref(索引查询)、range(走的索引but范围查询)、index(索引树扫描)、all(全盘扫描)

慢SQL如何分析
采用mysql自动执行计划explain来查看执行情况
通过key和key_len检查是否命中索引,如果本身已经添加了索引,可以判断索引是否失效
通过type关键字查看sql是否有进一步的优化空间,是否存在全索引或全盘扫描
通过extra建议判断,是否出现回表,如果出现可以尝试添加索引或修改返回字段

什么是索引
mysql高效访问数据的数据结构(有序)
提高检索数据的效率,降低数据库io成本(你需要全表扫描)
通过索引对数据进行排序,降低数据排序成本,降低CPU消耗

索引底层数据结构
Mysql的InnoDB引擎采用B+树的数据结构来存储索引
· 阶数更多,路径更短
· 磁盘读写代价B+树更低,非叶子节点只存储指针,叶子节点存储行数据
· B+便于扫库和区间查询,叶子节点是双向链表(B树非叶子和叶子都会存放数据)

什么是聚簇索引什么是非聚簇索引
聚簇索引(聚集索引):数据与索引放到一起,B+树叶子节点保存了整行数据,有且只有一个
非聚簇索引(二级索引):数据与索引分开存储,B+树叶子节点保存对应主键,可以有多个

回表查询
通过二级索引找到对应的主键值,到聚集索引中查找整行数据

覆盖索引
覆盖索引指的是查询使用了索引,返回的列,必须在索引中全部找到。
使用id查询,直接走聚簇索引,一次索引扫描,直接返回数据,性能高
如果返回的列没有创建索引,可能触发回表查询,尽量避免使用select*

Mysql超大分页怎么处理
问题:数据量较大,limit分页查询,需要对数据进行排序,效率低
解决方案:覆盖索引+子查询。先分页查询数据id字段,确定id之后使用子查询过滤,只查询这个id列表中的数据就可以了,查询id的时候,走的覆盖索引,提升效率。

select * 
from tb_sku t, (select id from tb_sku order by id limit 900000000, 10) a
where t.id = a.id;

索引创建原则
*数据量较大,且频繁查询的表
*常作为查询条件、排序、分组的字段
字段内容区分度高
内容较长,使用前缀索引
*尽量联合索引
*要控制索引数量
如果索引列不能存储null值,请在创建表时使用not null约束

什么情况下索引会失效
违反最左前缀法则,索引失效
索引abc_index:(a,b,c),只会在where条件中带有(a)、(a,b)、(a,b,c)的三种类型的查询中使用。其实这里说的有一点歧义,其实当where条件只有(a,c)时也会走,但是只走a字段索引,不会走c字段。
范围查询右边的列,索引失效
字符串类型的数值不加单引号,索引失效(类型转换)
以%开头的like模糊查询,索引失效
不要在索引列上进行运算操作,索引失效
索引包含有 NULL 值的列,索引失效(索引不会包含有 NULL 值的列)

sql优化
表设计优化,数据类型选择
索引优化,索引创建原则
sql语句优化,避免索引失效,避免使用select *
主从复制、读写分离、不让数据的写入影响读操作
分库分表
答:sql优化的话,建表使用索引,sql语句的编写、主从复制、读写分离,数据量比较大的话,可以考虑分库分表。建表的时候参考阿里开发手册《嵩山版》,比如,定义字段需要结合字段含义选择合适类型,如果是数值的话,像tinyint、int、bigint 根据实际情况选择。如果是字符串,char和varchar(可变长度)或者text类型。使用索引的时候,满足创建索引原则。sql语句,select 必须指明字段,不直接使用select * ,注意sql语句,避免索引失效写法,如果是聚合查询,尽量用union all 代替 union(多一层过滤,效率低)表关联尽量使用innerjoin 不要使用 left right ,必须使用的话最好小表驱动大表。

事务

特性
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
A向B转账500元,转账成功,A扣500,B加500,原子性操作体现在要么都成功,要么都失败。
转账过程,数据要一致,A扣除500,B必须增加500
在转账过程,隔离性体现在不能受其他事物干扰
事务提交以后,要把数据持久化(落盘)

并发事务带来的问题
脏读:一个事物读到领一个事务没有提交的数据
不可重复读:一个事物前后读取同一条记录,两次读取数据不同
幻读:一个事物按照条件查询数据,没有对应数据行,在插入数据时,又发现这行数据存在。

解决问题:隔离级别 默认可重复读
(RU)未提交读 啥也没解决
(RC)读已提交 脏读
(RR)可重复读 脏读、不可重复读
(SB)串行化 脏读、不可重复读、幻读

undo log和redo log的区别
undo log:逻辑日志,记录与实际操作语句相反的操作。事务回滚时,通过你操作恢复原来的数据
redo log:记录数据页的物理变化,服务宕机可以用来同步数据
redo log 保证事务的持久性 ,undo log保证事务的 原子性一致性

事务中的隔离性是如何保证的
锁:排他锁,一个事务获取了一个数据行的排他锁,其他事物就不能在获取改行的其他锁
mvcc:多版本并发控制

MVCC
多版本并发控制:一个数据的多个版本,使得读写操作没有冲突。
底层实现分为三个部分:隐藏字段、undo log、readView
隐藏字段:DB_TRX_ID(记录每一次操作的事务id,自增)、DB_ROLL_PTR(回滚指针,指向上一个版本的事务版本记录地址)、DB_ROW_ID(隐藏主键)
undo log:
回滚日志—存储老版本数据
版本链—多个事务并行操作某一行记录,记录不同事物修改数据的版本,通过roll_pointer指针形成一个链表
readView:解决事务查询选择版本的问题,在内部定义了一些匹配规则和当前一些事务id判断该访问哪儿个版本的数据,不让的隔离级别快照读是不一样的,最终的访问的结果不一样。如果是RC隔离级别,每次之快照读生成readView,如果是RR隔离级别,仅在事务中第一次执行快照读时生成readView,后续复用。

主从同步原理
核心是二进制文件binlog(DDL数据定义语句和DML(增删改)语句)
1、Master主库在事务提交时,会把数据变更记录在二进制文件Binlog中
2、从库读取主库Binlog,吸入到从库的中继日志Relay log
3、从库重做中继日志中的事件,将改变反映它自己的数据

分库分表
水平分库:将一个库的数据拆分到多个库中,解决海量数据存储和高并发问题
水平分表:解决单表存储和性能问题
垂直分库:根据业务进行拆分,高并发下提高磁盘IO和网络连接数
垂直分表:冷热数据分离,多表互不影响

相关文章:

mysql闲谈

如何定位慢查询 1、测试环境压测时,有的接口非常慢,响应时间超过2秒以上。当时系统部署了运维的监控系统Skywalking,在展示报表中可以看到是哪儿个接口慢,可以看到SQL具体执行时间。 2、如果没有类似的监控系统,在Mysq…...

物联网学习1、什么是 MQTT?

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通…...

【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析

一、引言 在机器学习项目中,数据探索是至关重要的一步。它不仅是模型构建的基础,还是确保模型性能稳定、预测准确的关键。数据探索的过程中,数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息&#xff…...

软件测试(一)--简介+主流技能+分类+模型+流程

一、软件及测试简介 1、软件生产过程 需求产生–需求文档–设计效果图–产品开发–产品测试(测试产品与需求文档是否一致)–部署上线 2、什么是软件测试 使用技术手段验证软件是否满足使用需求。 技术包括:(使用网络技术测试安…...

技术引领,策略升级:腾讯云与你共探数字金融新篇章

引言 2024 年 3 月 27 日下午,在北京腾讯总部,一场关于大模型与数据要素时代数字金融发展的深入讨论火热进行中。【TVP 走进腾讯:大模型与数据要素时代的数字金融发展论坛】是在腾讯二十年发展历程和数字化实践的基础上,进一步探索…...

数据库-root密码丢失的重置方案(win11环境)

当在windows系统中安装的mysql由于操作不当,或者密码遗忘,今天测试了一下,可以用以下方法重置root的密码。 mysqlwindows环境root密码重置问题 在win10/11环境下mysql8密码遗忘后的重置密码方案。 停止mysql服务 查找windows中的mysql服务名称…...

免试生常问的一些问题汇总---专升本学习篇

1.你怎么理解你申请的专业? 答:软件工程室一门涉及软件开发、维护和管理的工程学科。它结合了计算机科学、工程学和管理科学的原理,皆在通过系统化、规范化的方法来开发高质量的软件系统。 1.技术和支持 :软件工程包括编程语言、算法、数据结构、软件设计模式、软件测试、…...

FPGA的就业前景

FPGA(Field-Programmable Gate Array)技术在数字电路设计和嵌入式系统开发方面具有广泛的应用,因此在FPGA领域有着较好的就业前景。 目前,FPGA在通信、计算机、消费电子、汽车、航空航天等行业中得到了广泛应用。随着新一代通信网…...

7.阻塞模式与非阻塞模式

1.阻塞模式 一个线程来处理多个连接显得力不从心 accept等待连接 是一个阻塞方法 read读取SocketChannel中的数据 是一个阻塞方法 /*** 服务端* param args* throws IOException*/public static void main(String[] args) throws IOException {//建立一个缓冲区ByteBuffer b…...

Unity类银河恶魔城学习记录11-10 p112 Items drop源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemObject_Trigger.cs using System.Collections; using System.Collecti…...

EasyExcel 模板导出excel、合并单元格及单元格样式设置。 Freemarker导出word 合并单元格

xls文件: 后端代码: InputStream filePath this.getClass().getClassLoader().getResourceAsStream(templateFile);// 根据模板文件生成目标文件ExcelWriter excelWriter EasyExcel.write(orgInfo.getFilename()).excelType(ExcelTypeEnum.XLS).withTe…...

炫我科技:云渲染领域的佼佼者

随着数字化时代的来临,云渲染技术正逐渐成为影视、游戏、动画等创意产业的重要支柱。在这一领域中,炫我科技凭借其卓越的技术实力、优质的服务以及不断创新的精神,已然成为了云渲染行业的佼佼者。 炫我科技自成立之初,便以打造高…...

VsCode正确解决vue3+Eslint+prettier+Vetur的配置冲突

手把手教你VsCode正确解决vue3EslintprettierVetur的配置冲突 VsCode正确解决vue3EslintprettierVetur的配置冲突Eslint文档查看和修改规则:step1:首先快速浏览下规则简要setp2: ctrlF 搜索你要配置规则的英文名,例如attributesetp3: 修改配置…...

计算机网络—VLAN 间路由配置

目录 1.拓扑图 2.实验环境准备 3.为 R3 配置 IP 地址 4.创建 VLAN 5.配置 R2 上的子接口实现 VLAN 间路由 6.配置文件 1.拓扑图 2.实验环境准备 配置R1、R3和S1的设备名称,并按照拓扑图配置R1的G0/0/1接口的IP地址。 [Huawei]sysname R1 [R1]interface Giga…...

微服务篇-C 深入理解第一代微服务(SpringCloud)_VII 深入理解Swagger接口文档可视化管理工具

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 Part 1 理论部分 1 传统API接口文档存在的问题? 1 对API接口文档进行更新的时候,需要及时将变化通知前端开发人员&…...

区块链的应用领域:重塑未来的信任机制

区块链作为一种新兴的技术,正在逐渐改变我们的生活。它以其独特的优势,正在开启一个信任的新时代。在金融、供应链管理、医疗健康、教育、文化娱乐、房地产等众多领域,区块链已经崭露头角,以其独特的方式发挥着作用。 1.金融领域…...

怎么在循环List的时候删除List的元素

怎么在循环List的时候删除List的元素 1. 先给出结论 任何时候都不要在 for 循环中删除 List 集合元素 2. 为什么在 for 循环中删除 List 集合元素是错误的 在 for 循环中删除 List 集合元素的问题主要是因为循环的迭代器和 List 集合的元素索引之间的冲突。在使用 for 循环遍历…...

SpringBoot+thymeleaf完成视频记忆播放功能

一、背景 1)客户要做一个视频播放功能,要求是系统能够记录观看人员在看视频时能够记录看到了哪个位置,在下次观看视频的时候能够从该位置进行播放。 2)同时,也要能够记录是谁看了视频,看了百分之多少。 说明:由于时间关系和篇幅原因,我们这里只先讨论第一个要求,第…...

ES 7.12官网阅读-ILM(index lifecycle management)

官网文档:ILM: Manage the index lifecycle | Elasticsearch Guide [7.12] | Elastic ILM:管理 index 的生命周期 可以根据你的性能、弹性、保存时长需求,使用ILM策略来自动管理你的index;比如 1. 当一个index达到确定的大小&a…...

Jenkins执行策略(图文讲解)

Jenkins执行策略-图文讲解 一:手动执行1、手动执行流程2、手动执行操作 二、通过构建触发器——定时执行1、定时执行流程2、定时执行操作 三、当开发部署成功之后进行执行——在测试项配置——关注的项目1、执行流程2、操作流程 四、测试代码有更新的时候自动构建1、…...

如何高效集成DVA与Apollo Client:GraphQL状态管理终极指南

如何高效集成DVA与Apollo Client:GraphQL状态管理终极指南 【免费下载链接】dva 🌱 React and redux based, lightweight and elm-style framework. (Inspired by elm and choo) 项目地址: https://gitcode.com/gh_mirrors/dv/dva DVA是一个基于R…...

崩坏星穹铁道自动化助手:三月七小助手完整使用指南

崩坏星穹铁道自动化助手:三月七小助手完整使用指南 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 游戏时间解放革命:告别重复劳动的智能方案…...

基于“灵珠AI平台”从0到1搭建一个博物馆数字人导游智能体教程

一、前言 有没有小伙伴去过博物馆?是不是经常遇到这种情况:租一个讲解器,走到哪听到哪,但它只管自己讲,根本不关心你想听什么。你对某件青铜器特别好奇,想多问两句?不好意思,讲解器不…...

11. TCN BPDU:揭秘 STP 拓扑变更的通知与收敛机制

一、TCN BPDU介绍 在 STP 网络稳定运行时,根桥会周期性发送​​​配置 BPDU​​(Configuration BPDU),用于维持整个生成树拓扑的稳定性。然而,当网络中出现链路故障、端口 UP/DOWN 等拓扑变更事件时,仅靠常…...

新手也能看懂的CTF解题思路:从ISCTF一道MISC题看Python打包exe的逆向技巧

CTF逆向入门:Python打包exe的逆向分析与实战技巧 1. 初识CTF逆向挑战 当你第一次接触CTF逆向题目时,可能会被各种奇怪的二进制文件搞得一头雾水。特别是那些由Python打包生成的exe文件,它们看起来和普通Windows程序没什么两样,但…...

从日志混乱到计费纠纷:一次线上事故复盘,让我重新审视Linux chrony时间同步的配置细节

从日志混乱到计费纠纷:一次线上事故复盘,让我重新审视Linux chrony时间同步的配置细节 凌晨3点17分,告警铃声划破了运维中心的寂静。监控大屏上,分布式交易系统的日志时间戳出现了诡异的乱序——本该在T1秒完成的订单,…...

好写作AI的AIPPT秘籍:让论文变身炫酷学术秀的魔法棒

在学术的浩瀚宇宙中,每一篇论文都是一颗独特的星辰,蕴含着研究者的智慧与心血。然而,如何让这些星辰在学术会议的舞台上璀璨夺目,吸引众人的目光?答案或许就藏在好写作AI的AIPPT功能里——这根神奇的魔法棒&#xff0c…...

计算机毕业设计:Python城市气候分析与预测平台 Flask框架 随机森林 K-Means 可视化 数据分析 大数据 机器学习 深度学习(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发,基于 Flask 框架搭建后端服务,使用 sqlite 数据库进行数据存储,前端利用 Echarts 实现数据可视化,运用机器学习中的 K-Means 聚类算法进行天气预测,采用随机森林回归算法预测…...

供电、传感、控制三类线芯分配实操指南

做工程、搞设备的朋友应该都有体会,连接器选型看似是"接几根线、保证导通"的小事,但我在行业摸爬滚打10年,见过太多因线芯分配不合理,导致设备后期频繁出问题的案例——信号不稳、误动作、绝缘老化,甚至起火…...

别再只盯着CNN了!用PyTorch Geometric从零搭建GCN,实战Cora文献分类(附完整代码)

图神经网络实战:用PyTorch Geometric构建GCN实现Cora文献分类 在深度学习领域,图神经网络(GNN)正成为处理非欧几里得数据的利器。与传统的CNN和RNN不同,GNN专门设计用于处理图结构数据,能够有效捕捉节点间的复杂关系。本文将带您从…...