Java面试题之11MySQL
你对MySQL执行计划怎么看
执行计划就是SQL的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数
在MySQL中,我们可以通过explain命令来查看执行计划。其语法如下:
EXPLAIN SELECT * FROM table_name WHERE conditions;
在执行该命令后,MySQL将返回一张表格,用于展示查询的执行计划。其中包括以下几个重要字段:
- id:每个查询都有一个唯一的id,用于标识这个查询;
- select_type:表示查询类型,主要分为简单查询、联合查询、子查询等;
- table:表示查询涉及到的表名;
- partitions:表示涉及到的分区;
- type:表示表的访问类型,包括ALL(全表扫描)、index(索引扫描)、range(索引范围扫描)、ref(非唯一索引扫描)、eq_ref(唯一索引扫描)等;
- possible_keys:表示可用的索引;
- key:MySQL选择使用的索引;
- key_len:表示索引字段长度;
- ref:表示索引被哪个字段或常量所引用;
- rows:表示MySQL根据表统计信息估算出的查询结果集的行数;
- filtered:表示通过条件过滤后的结果集占总结果集的百分比;
- Extra:包含MySQL执行计划中的其他信息,例如是否使用了临时表、是否使用了文件排序等。
- 执行效率:ALL<index<range<eq_ref<const<system
事务的基本特性和隔离级别
事务的基本特性ACID分别:原子性,一致性,隔离性,持久性。
原子性:指的是一个事务中的操作要么全部成功,要么全部失败。
一致性:指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。
隔离性:指的是一个事务的修改在最总提交前,对其他事务是不可见的。
持久性:指的是一旦事务提交,所作的修改就会永久保存到数据库中。
隔离级别
read uncommit 读未提交,可能会读到其他事务未提交的数据,也叫脏读
read commit 读已提交,两次读取结果不一致,叫不可重复读,解决脏读问题,
repeatable read 可重复复读,MySQL的默认级别,每次读取结果都一样,但可能产生幻读
serializable 串行,一般不使用,会给每一行读取的数据加锁,导致大量超时和锁竞争的问题
对慢查询都有怎样的优化过
优化首先要清楚慢的原因,查询条件没有命中索引,loadl不需要的数据列,数据量太大?
所以优化也是针对这个三个方向来进行优化的
首先分析语句,是否load了额外的数据,可能时出现呢了多余的行并且抛弃掉了,可能是加载了许多不需要的列,对语句进行分析以及重写
分析语句的执行计划,如何获得使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引
如果对语句的优化无法进行,可以考虑表中的数据量是否太大,进行横向或者纵向的分表
ACID靠什么保证的?
A原子性是由undo log日志保证,他记录了需要回滚的日志信息,事务回滚时撤销以及执行成功的sql
C一致性是由其他三个特性保证,程序代码要保证业务的上的一致性
I隔离性偶MVCC来保证
D持久性由内存+redo log来保证,MySQL修改数据同时在内存和redo log记录这次操作,发生宕机可以从redo log恢复
InnoDB redo log写盘,InnoDB事务进入prepare状态。
如果prepare成功,binlog写盘,再继续将事务日志持久化到binlog,如果持久化成功,那么InnoDB事务则进入commit状态(在redo log里面写入一个commit记录)redo log的刷盘会在系统空闲时进行
相关文章:
Java面试题之11MySQL
你对MySQL执行计划怎么看 执行计划就是SQL的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数 在MySQL中,我们可以通过explain命令来查看执行计划。其语法如下: EXPLAIN SELECT * FROM table_name WHERE conditions;在…...
R语言:多值提取到点
ArcGIS中有相关工具实现多值提取到点的功能,在这里,我将使用R语言进行操作: library(dplyr) library(readxl) library(sf) library(raster)setwd("D:/Datasets") Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/…...
八股文打卡day27——数据库(4)
面试题:讲一下事务的隔离级别? 我的回答: 因为事务之间的隔离性,造成了一些问题,比如说:脏读、不可重复读和幻读(虚读)。 1.什么叫脏读? 就是一个事务读取到了另一个事…...
Java桥接模式源码剖析及使用场景
目录 一、介绍二、项目管理系统中使用桥接模式三、权限管理中使用桥接模式四、Java JDBC中使用桥接模式 一、介绍 它的主要目的是将抽象化与实现化分离,使得二者可以独立变化,就像一个桥,将两个变化维度连接起来。各个维度都可以独立的变化。…...
【异常处理】verilator安装时出现异常 make: *** [Makefile:195: verilator_gantt.1] Error 13
在ubuntu中安装verilator工具时执行make出现该报错。 当我出现这个报错的时候我一脸懵逼,因为网上找不到相关解决办法。 后来想到我的verilator是从github上下载zip,然后解压后传到ubuntu上的,windows上解压我记得会把-替换成_,这…...
测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus
测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus 0. 引言1. 测试 Claude 3 Opus3. 试用 api key 限制 0. 引言 今天测试一下 Anthropic 发布的 Claude 3 Opus。 3月4日,Anthropic 宣布推出 Claude 3 型号系列,该系列在广泛的认知任务中树立了新的…...
【题解】—— LeetCode一周小结10
【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结9 4.用栈实现队列 题目链接:232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):…...
Android studio虚拟调试出现“我的APP keeps stopping”问题
问题如图: 遇到这种情况,一看代码,也没有报错呀,怎么不能运行呢?不要慌!我们一步一步来。 1、查看Logcat日志 在Android Studio中查看Logcat窗口,可以获取应用程序崩溃时的详细错误信息&…...
【Web】浅聊Java反序列化之Spring2链——两层动态代理
目录 简介 简话JdkDynamicAopProxy 关于target的出身——AdvisedSupport EXP 请确保已阅读过前文或对Spring1链至少有一定认知:【Web】浅聊Java反序列化之Spring1链——三层动态代理-CSDN博客 简介 Spring2 和 Spring1 的反序列化过程基本相同,唯一…...
2386. 找出数组的第 K 大和
2386. 找出数组的第 K 大和 题目链接:2386. 找出数组的第 K 大和 代码如下: //优先队列 //参考:https://leetcode.cn/problems/find-the-k-sum-of-an-array/solutions/2668280/zhao-chu-shu-zu-de-di-k-da-he-by-leetcod-z5kq class Soluti…...
Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss)
Loss loss的作用如下: 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据(反向传播) L1Loss 绝对值损失函数:在每一个batch_size内,求每个输入x和标签y的差的绝对值,最后返回他们平均值 M…...
2.2 传统经济学在耍赖
传统经济学中,主体的行为决策是研究的重点对幸福的追求不是传统经济学的研究重点,决策才是。在传统经济学那里,只要能搞清楚是什么决定了决策就可以了。 传统经济学用人们对物品的喜好的排序去替代了对幸福的直接度量。这样做有一个好处&…...
【算法面试题】-04
执行时长 def min_execution_time(n, size, tasks):a 0ans sizei 0while i < size:tmp tasks[i]a tmpif a < n:a 0else:a - ni 1ans a // nif a % n ! 0:ans 1return ans# 读取输入 n int(input()) size int(input()) tasks list(map(int, input().split()))…...
力扣hot100:152.乘积最大子数组(动态规划)
一个子数组问题,我们要使用线性dp,最好先考虑以i结尾,如果定义dp[i]为前i个数最大子数组乘积值 那么dp[i-1]就无法转移到dp[i]。因此我们先考虑dp[i]定义为以第i个数结尾的最大子数组乘积值。 53. 最大子数组和 最大子数组和是一个动态规划问…...
【python 】----Pytest基础知识与进阶知识
定义 用于编写和执行Python测试全功能测试框架(工具),是一个第三方库 安装 pip insatll pytest 安装pytest --version 校验 pytest的组成构成 不写调用语句也可以执行函数内容 在用例运行语句里面: -s:指的是开启与终端的交互,如果没有-s(程序不会输入与打印),一条用…...
谷歌开源的LLM大模型 Gemma 简介
相关链接: Hugging face模型下载地址:https://huggingface.co/google/gemma-7bGithub地址:https://github.com/google/gemma_pytorch论文地址:https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf官方博客&…...
深入理解 Vuex:从基础到应用场景
前言 在之前的文章中,我们已经对 Vue.js 有了一定的了解。今天我们要对Vue官方的状态共享管理器Vuex进行详细讲解,将其基本吃透,目标是面对大多数业务需求; 一、介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用…...
自定义 classNames hooks
什么是自定义 hooks 自定义hooks是react提供的编写公共函数的方法 自定hooks 和 通用函数的区别 一定有人会说 hooks 可以使用react 的方法,但是公共函数也可以,因为 jsx 语法的原因 函数必须开头进行大写 其实这些都是 react 的语法规范ÿ…...
玩转centos 下的core 文件
玩转centos 下的core 文件 ------------------------------------------------------------ author: hjjdebug date: 2024年 03月 06日 星期三 12:38:35 CST description: 玩转centos 下的core 文件 ------------------------------------------------------------ 一: 准备一…...
深入浅出计算机网络 day.1 概论③ 电路交换、分组交换和报文交换
人无法同时拥有青春和对青春的感受 —— 04.3.9 内容概述 01.电路交换、分组交换和报文交换 02.三种交换方式的对比 一、电路交换、分组交换和报文交换 1.电路交换 计算机之间的数据传送是突发式的,当使用电路交换来传送计算机数据时,其线路的传输效率一…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
