mysql 合集

news2025/5/29 10:08:44

mysql 日志主要分为三个日志:redo log、binlog、undo log;

redo log 主要是用来mysql 奔溃恢复

redo log 主要是有一个机制是 设置刷盘机制:
通过innodb_flush_log_at_trx_commit控制刷盘策略:
=1:每次事务提交都刷盘(默认,最安全)。
=0:每秒刷盘(可能丢失1秒数据)。
=2:写入文件系统缓存,不强制刷盘(依赖操作系统)
为什么要加这个日志,直接写到磁盘不好嘛?
io操作是随机操作,redo log 写入是顺序的减少消耗
在数据恢复时候即使没有写到磁盘中,也可以利用 redo log 进行重放恢复

binlog 是用来记录mysql 表数据更新的 主要用来 同步数据

binlog 会记录所有涉及更新数据的逻辑操作,并且是顺序写;
一般都是先到 binlog cache 然后到 bin log文件 然后写入磁盘
其中有个重要参数控制啥时候去写入到磁盘(sync_binlog)
为0的时候,表示每次提交事务都只write(操作系统的缓存),由系统自行判断什么时候执行fsync
为1的时候,表示每次提交事务后执行 fsync(写到 bin log 和 系统磁盘)
为N(N>1)的时候,表示每次提交事务后在系统缓存写到 N个事务后 执行 fsync(写到 bin log 和 系统磁盘)

两阶段提交

binlog 是事务提交后写入 redo log 是事务在执行时候一直写入,当事务没提交时候 redolog 里面记录状态为 perpare ,当事务提交后写如bin log 并更新redo log 为 commit;

​崩溃恢复逻辑:
若 Redo Log 为 Commit 状态:事务必须提交。
若 Redo Log 为 Prepare 状态:
检查 Binlog 是否存在对应事务的日志:
​存在 → 提交事务(重放 Redo Log)。
​不存在 → 回滚事务(通过 Undo Log)

undo log(回滚日志) 来保证事务的原子性

执行一句更新操作 会在undo log保存数据修改前的旧版本;

sql 优化面试

1. explain 执行计划

其中主要的列有:id、type、key、extra
id 没啥好说的:越大越先被执行,如果一样从上到小顺序执行
type: 主要分为下面几个级别(按照顺序由好到坏):
1)system(这个我没遇到过)
2)const(一般查询结果最多有一条,一般主键索引或者唯一索引的所有字段作为查询条件时候)
3)eq_ref(一般是连表查询时候,前表行和后面连表的行一一对应时候,一般是主键索引或者唯一索引的所有字段作为连表条件时候)
4)ref(是一般查询走了普通索引时候)
5)range(对索引列进行了范围查找)、ALL(全表扫描了)
key: 代表这次查询用用到的索引
extra:表示这次查询用到的额外信息
1)use filesort(用到了额外的步骤进行了排序,没用用到表内的索引)
2)use temporary (mysql 用到了临时表,常见与order by 和 group by)
3) use index(表示用到了索引覆盖,不需要回表效率高)
4)use index condition (表示用到了索引条件下推)==》索引条件下推:如果联合索引中,查询条件中有一些命中 但是有一些没走到索引,mysql 优化器会采用索引下推,在引擎层 对没走上索引但是在索引里面的条件进行提前筛选然后回表,返回给应用层;如果没开启,就会将走了索引的满足条件的所有数据进行回表,然后返回再筛选,增多了回表数据。
5)use where(一般是对没有走了索引的字段进行了筛选)
其中 如果 extra 出现了 use filesort 或者 use temporary 时候表示sql 存在优化空间,应该尽量避免!!

2. mysql 的隐式转换

一般就是 字符串 转 数字 或者就是 数字 转 字符串 其中有三个特性:
1)字符串转数字时候对 mysql 效率没有影响 如果有索引还是会走的。
2)数字转字符串时候 影响很大 导致不会走索引 全表扫描
3)字符串转数字时候 如果字符串是以字符开头 mysql 会转为 0 ,如果 是以数字开头 则是从数字到后面第一个不是数字为止!
例子:num 是数字型的 如果是 num=‘ab123’ 表示 num=0 如果 num=‘123bbb’ 表示 num=123

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

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

相关文章

人脸识别技术合规备案最新政策详解

《人脸识别技术应用安全管理办法》将于2025年6月1日正式实施,该办法从技术应用、个人信息保护、技术替代、监管体系四方面构建了人脸识别技术的治理框架,旨在平衡技术发展与安全风险。 一、明确技术应用的边界 公共场所使用限制:仅在“维护公…

AStar低代码平台-脚本调用C#方法

修改报工表表单&#xff0c;右键定义弹出菜单&#xff0c;新增一个菜单项&#xff0c;并在点击事件脚本中编写调用脚本。 编译脚本&#xff0c;然后在模块代码里面定义这个方法&#xff1a; public async Task<int> on_call_import(DataRow curRow) {PrintDataRow(cur…

企业级RAG技术实战指南:从理论到落地的全景解析

前言 在大模型技术日新月异的今天&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术正成为企业突破AI应用瓶颈的关键利器。当传统AI系统还在处理结构化数据的泥潭中挣扎时&#xff0c;RAG技术已经打开了通向非结构化知识海洋的大门。这本《RAG技术实战指南》以独特的工…

【八股战神篇】RabbitMQ高频面试题

简述RabbitMQ五种模式 &#xff1f; 延伸 请介绍一下RabbitMQ的特点 延伸 简述RabbitMQ的发布与订阅模式 延伸 RabbitMQ 如何保证消息不丢失&#xff1f; 延伸 RabbitMQ 如何保证消息有序&#xff1f; 延伸 专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xf…

高阶数据结构——红黑树实现

目录 1.红黑树的概念 1.1 红黑树的规则&#xff1a; 1.2 红黑树的效率 2.红黑树的实现 2.1 红黑树的结构 2.2 红黑树的插入 2.2.1 不旋转只变色&#xff08;无论c是p的左还是右&#xff0c;p是g的左还是右&#xff0c;都是一样的变色处理方式&#xff09; 2.2.2 单旋变色…

安卓学习笔记-声明式UI

声明式UI Jetpack Compose 是 Google 推出的用于构建 Android UI 的现代化工具包。它采用 声明式编程模型&#xff08;Declarative UI&#xff09;&#xff0c;用 Kotlin 编写&#xff0c;用于替代传统的 XML View 的方式。一句话概括&#xff1a;Jetpack Compose 用 Kotlin…

AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?

引言:从数值预报到AI大模型的范式变革 传统的天气预报依赖于数值天气预报(NWP, Numerical Weather Prediction),通过求解大气动力学方程(如Navier-Stokes方程)进行物理模拟。然而,NWP计算成本极高,依赖超级计算机,且难以处理小尺度天气现象(如短时强降水)。 近年来…

数据结构第3章 线性表 (竟成)

目录 第 3 章 线性表 3.1 线性表的基本概念 3.1.1 线性表的定义 3.1.2 线性表的基本操作 3.1.3 线性表的分类 3.1.4 习题精编 3.2 线性表的顺序存储 3.2.1 顺序表的定义 3.2.2 顺序表基本操作的实现 1.顺序表初始化 2.顺序表求表长 3.顺序表按位查找 4.顺序表按值查找 5.顺序表…

JAVA面试复习知识点

面试中遇到的题目&#xff0c;记录复习&#xff08;持续更新&#xff09; Java基础 1.String的最大长度 https://www.cnblogs.com/wupeixuan/p/12187756.html 2.集合 Collection接口的实现&#xff1a; List接口&#xff1a;ArraryList、LinkedList、Vector Set接口&#xff1a…

项目中的流程管理之Power相关流程管理

一、低功耗设计架构规划&#xff08;Power Plan&#xff09;   低功耗设计的起点是架构级的电源策略规划&#xff0c;主要包括&#xff1a;   电源域划分   基于功能模块的活跃度划分多电压域&#xff08;Multi-VDD&#xff09;&#xff0c;非关键模块采用低电压&#xf…

SLOT:测试时样本专属语言模型优化,让大模型推理更精准!

SLOT&#xff1a;测试时样本专属语言模型优化&#xff0c;让大模型推理更精准&#xff01; 大语言模型&#xff08;LLM&#xff09;在复杂指令处理上常显不足&#xff0c;本文提出SLOT方法&#xff0c;通过轻量级测试时优化&#xff0c;让模型更贴合单个提示。实验显示&#x…

《计算机组成原理》第 10 章 - 控制单元的设计

目录 10.1 组合逻辑设计 10.1.1 组合逻辑控制单元框图 10.1.2 微操作的节拍安排 10.1.3 组合逻辑设计步骤 10.2 微程序设计 10.2.1 微程序设计思想的产生 10.2.2 微程序控制单元框图及工作原理 10.2.3 微指令的编码方式 1. 直接编码&#xff08;水平型&#xff09; 2.…

【数据结构与算法】模拟

成熟不是为了走向复杂&#xff0c;而是为了抵达天真&#xff1b;不是为了变得深沉&#xff0c;而是为了保持清醒。 前言 这是我自己刷算法题的第五篇博客总结。 上一期笔记是关于前缀和算法&#xff1a; 【数据结构与算法】前缀和-CSDN博客https://blog.csdn.net/hsy1603914691…

PyTorch入门-torchvision

torchvision torchvision 是 PyTorch 的一个重要扩展库&#xff0c;专门针对计算机视觉任务设计。它提供了丰富的预训练模型、常用数据集、图像变换工具和计算机视觉组件&#xff0c;大大简化了视觉相关深度学习项目的开发流程。 我们可以在Pytorch的官网找到torchvision的文…

18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的字符串是什么&#xff1f;1、例子1&#xff1a;多语言支持演示2、例子2&#xff1a;字符串不可变性验证3、答案&#xff1a;&#xff08;1&#xff09…

5月27日复盘-Transformer介绍

5月27日复盘 二、层归一化 层归一化&#xff0c;Layer Normalization。 Layer Normalizatioh和Batch Normalization都是用来规范化中间特征分布&#xff0c;稳定和加速神经网络训练的&#xff0c;但它们在处理方式、应用场景和结构上有本质区别。 1. 核心区别 特征BatchNo…

MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?

MyBatis-Plus-Kit &#x1f680; MyBatis-Plus-Kit 是基于MyBatis-Plus的增强组件&#xff0c;专注于提升开发效率&#xff0c;支持零侵入、即插即用的能力扩展。它聚焦于 免写 Controller、代码一键生成、通用响应封装 等核心场景&#xff0c;让您只需专注业务建模&#xff0…

实时数仓flick+clickhouse启动命令

1、启动zookeeper zk.sh start 2、启动DFS&#xff0c;Hadoop集群 start-dfs.sh 3、启动yarn start-yarn.sh 4、启动kafka 启动Kafka集群 bin/kafka-server-start.sh -daemon config/server.properties 查看Kafka topic 列表 bin/kafka-topics.sh --bootstrap-server local…

【Git】Commit Hash vs Change-Id

文章目录 1、Commit 号2、Change-Id 号3、区别与联系4、实际场景示例5、为什么需要两者&#xff1f;6、总结附录——Gerrit 在 Git 和代码审查工具&#xff08;如 Gerrit&#xff09;中&#xff0c;Commit 号&#xff08;Commit Hash&#xff09; 和 Change-Id 号 是两个不同的…

【KWDB创作者计划】_KWDB分布式多模数据库智能交通应用——高并发时序处理与多模数据融合实践

导读&#xff1a;本文主要探讨了基于KWDB的分布式多模数据库智能交通应用场景&#xff0c;进行了高并发时序处理与多模数据融合实践方向的思考。探索智慧交通领域的数据实时处理与存储资源利用方面的建设思路。 本文目录 一、智能交通数据架构革命   1.1 传统架构瓶颈  …