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

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的执行查询的顺序&#xff0c;以及如何使用索引查询&#xff0c;返回的结果集的行数 在MySQL中&#xff0c;我们可以通过explain命令来查看执行计划。其语法如下&#xff1a; EXPLAIN SELECT * FROM table_name WHERE conditions;在…...

R语言:多值提取到点

ArcGIS中有相关工具实现多值提取到点的功能&#xff0c;在这里&#xff0c;我将使用R语言进行操作&#xff1a; library(dplyr) library(readxl) library(sf) library(raster)setwd("D:/Datasets") Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/…...

八股文打卡day27——数据库(4)

面试题&#xff1a;讲一下事务的隔离级别&#xff1f; 我的回答&#xff1a; 因为事务之间的隔离性&#xff0c;造成了一些问题&#xff0c;比如说&#xff1a;脏读、不可重复读和幻读&#xff08;虚读&#xff09;。 1.什么叫脏读&#xff1f; 就是一个事务读取到了另一个事…...

Java桥接模式源码剖析及使用场景

目录 一、介绍二、项目管理系统中使用桥接模式三、权限管理中使用桥接模式四、Java JDBC中使用桥接模式 一、介绍 它的主要目的是将抽象化与实现化分离&#xff0c;使得二者可以独立变化&#xff0c;就像一个桥&#xff0c;将两个变化维度连接起来。各个维度都可以独立的变化。…...

【异常处理】verilator安装时出现异常 make: *** [Makefile:195: verilator_gantt.1] Error 13

在ubuntu中安装verilator工具时执行make出现该报错。 当我出现这个报错的时候我一脸懵逼&#xff0c;因为网上找不到相关解决办法。 后来想到我的verilator是从github上下载zip&#xff0c;然后解压后传到ubuntu上的&#xff0c;windows上解压我记得会把-替换成_&#xff0c;这…...

测试一下 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日&#xff0c;Anthropic 宣布推出 Claude 3 型号系列&#xff0c;该系列在广泛的认知任务中树立了新的…...

【题解】—— LeetCode一周小结10

【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结9 4.用栈实现队列 题目链接&#xff1a;232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a…...

Android studio虚拟调试出现“我的APP keeps stopping”问题

问题如图&#xff1a; 遇到这种情况&#xff0c;一看代码&#xff0c;也没有报错呀&#xff0c;怎么不能运行呢&#xff1f;不要慌&#xff01;我们一步一步来。 1、查看Logcat日志 在Android Studio中查看Logcat窗口&#xff0c;可以获取应用程序崩溃时的详细错误信息&…...

【Web】浅聊Java反序列化之Spring2链——两层动态代理

目录 简介 简话JdkDynamicAopProxy 关于target的出身——AdvisedSupport EXP 请确保已阅读过前文或对Spring1链至少有一定认知&#xff1a;【Web】浅聊Java反序列化之Spring1链——三层动态代理-CSDN博客 简介 Spring2 和 Spring1 的反序列化过程基本相同&#xff0c;唯一…...

2386. 找出数组的第 K 大和

2386. 找出数组的第 K 大和 题目链接&#xff1a;2386. 找出数组的第 K 大和 代码如下&#xff1a; //优先队列 //参考&#xff1a;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的作用如下&#xff1a; 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据&#xff08;反向传播&#xff09; L1Loss 绝对值损失函数&#xff1a;在每一个batch_size内&#xff0c;求每个输入x和标签y的差的绝对值&#xff0c;最后返回他们平均值 M…...

2.2 传统经济学在耍赖

传统经济学中&#xff0c;主体的行为决策是研究的重点对幸福的追求不是传统经济学的研究重点&#xff0c;决策才是。在传统经济学那里&#xff0c;只要能搞清楚是什么决定了决策就可以了。 传统经济学用人们对物品的喜好的排序去替代了对幸福的直接度量。这样做有一个好处&…...

【算法面试题】-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.乘积最大子数组(动态规划)

一个子数组问题&#xff0c;我们要使用线性dp&#xff0c;最好先考虑以i结尾&#xff0c;如果定义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 简介

相关链接&#xff1a; Hugging face模型下载地址&#xff1a;https://huggingface.co/google/gemma-7bGithub地址&#xff1a;https://github.com/google/gemma_pytorch论文地址&#xff1a;https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf官方博客&…...

深入理解 Vuex:从基础到应用场景

前言 在之前的文章中&#xff0c;我们已经对 Vue.js 有了一定的了解。今天我们要对Vue官方的状态共享管理器Vuex进行详细讲解&#xff0c;将其基本吃透&#xff0c;目标是面对大多数业务需求&#xff1b; 一、介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用…...

自定义 classNames hooks

什么是自定义 hooks 自定义hooks是react提供的编写公共函数的方法 自定hooks 和 通用函数的区别 一定有人会说 hooks 可以使用react 的方法&#xff0c;但是公共函数也可以&#xff0c;因为 jsx 语法的原因 函数必须开头进行大写 其实这些都是 react 的语法规范&#xff…...

玩转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.电路交换 计算机之间的数据传送是突发式的&#xff0c;当使用电路交换来传送计算机数据时&#xff0c;其线路的传输效率一…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...