MySQL篇
文章目录
- 一、MySQL-优化
- 1、在MySQL中,如何定位慢查询?
- 2、SQL语句执行很慢, 如何分析呢?
- 3、了解过索引吗?(什么是索引)
- 4、索引的底层数据结构了解过嘛 ?
- 5、什么是聚簇索引什么是非聚簇索引 ?
- 6、知道什么是回表查询嘛 ?
- 7、知道什么叫覆盖索引嘛 ?
- 8、MYSQL超大分页怎么处理 ?
- 9、索引创建原则有哪些?
- 10、什么情况下索引会失效 ?(在联合索引的情况下)
- 11、谈一谈你对sql的优化的经验
- 二、事务
- 1、事务的特性是什么?可以详细说一下吗?
- 2、并发事务带来哪些问题?怎么解决这些问题呢?MySQL的默认隔离级别是?
- 2.1. 并发事务问题
- 2.2. MySQL的默认隔离级别
一、MySQL-优化
1、在MySQL中,如何定位慢查询?
- 方案一:开源工具
调试工具:Arthas
运维工具:Prometheus 、Skywalking

- 方案二:MySQL自带慢日志
可在MySQL的配置文件(/etc/my.cnf)中配置如下信息:
# 开启MySQL慢日志查询开关
slow_query_log=1# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2
慢日志文件中记录会记录sql执行时间超过设置时间的sql信息
localhost-slow.log。
- 其中就包括了sql执行的耗时,以及记录sql语句

2、SQL语句执行很慢, 如何分析呢?
采用MySQL自带的分析工具 EXPLAIN:
也就是在sql前面加上EXPLAIN
- 通过
key和key_len检查是否命中了索引(索引本身存在是否有失效的情况) - 通过
type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描 - 通过
extra建议判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复
3、了解过索引吗?(什么是索引)
- 索引(index)是帮助MySQL高效
获取数据的数据结构(有序) - 提高数据
检索的效率,降低数据库的IO成本(不需要全表扫描) - 通过索引列对数据进行排序,降低
数据排序的成本,降低了CPU的消耗
4、索引的底层数据结构了解过嘛 ?

MySQL的InnoDB引擎采用的B+树的数据结构来存储索引
- 阶数更多,路径更短
- 磁盘读写代价B+树更低,
非叶子节点只存储指针,叶子阶段存储数据 - B+树便于
扫库和区间查询,叶子节点是一个双向链表
5、什么是聚簇索引什么是非聚簇索引 ?
- 聚簇索引:
聚簇索引(聚集索引):
数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个
- 非聚簇索引
非聚簇索引(二级索引):
数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个

6、知道什么是回表查询嘛 ?
要解释回表,就得解释一下聚簇索引和非聚簇索引。
通过二级索引找到对应的
主键值,到聚集索引中查找整行数据,这个过程就是回表

也就是说通过二级索引查到的仅仅是主键的值,索引还要根据查到的主键通过聚簇索引去查询到整条数据的信息。
7、知道什么叫覆盖索引嘛 ?
覆盖索引是指 查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到,
也就是通过索引能直接查询到想要的数据,不需要回表。
例如下面的sql:



- 覆盖索引是指查询
使用了索引,返回的列,必须在索引中全部能够找到 - 使用
id查询,直接走聚集索引查询,一次索引扫描,直接返回数据,性能高。 - 如果返回的列中没有创建索引,有可能会触发回表查询,尽量
避免使用select *
8、MYSQL超大分页怎么处理 ?
可以使用覆盖索引+子查询解决

9、索引创建原则有哪些?
1). 数据量较大,且查询比较频繁的表
2). 常作为查询条件、排序、分组的字段
3). 字段内容区分度高
4). 内容较长,使用前缀索引
5). 尽量联合索引
6). 要控制索引的数量
7). 如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它
10、什么情况下索引会失效 ?(在联合索引的情况下)

假设该表使用了如下联合索引:

name, status, address
-
违反
最左前缀法则

-
范围查询右边的列,不能使用索引

-
不要在
索引列上进行运算操作, 索引将失效

-
字符串不加单引号,造成索引失效。(类型转换)

-
以%开头的Like模糊查询,索引失效

11、谈一谈你对sql的优化的经验
1. 表的设计优化
比如设置合适的数值(tinyint int bigint),要
根据实际情况选择
比如
设置合适的字符串类型(char和varchar)char定长效率高,varchar可变长度,效率稍低
2. 索引优化
3. SQL语句优化
SELECT语句务必
指明字段名称(避免直接使用select * ,也是为了能使用覆盖索引,用什么数据就查什么数据)
SQL语句要避免造成索引失效的写法
尽量用union all代替union
union会多一次过滤,效率低(数据量多了,执行过滤操作耗时严重)
避免在where子句中对字段进行
表达式操作(也就是怕索引失效)
Join优化
能用innerjoin 就不用left join right join,如必须使用 一定要以小表为驱动
内连接会对两个表进行优化,优先把小表放到外边,把大表放到里边。left join 或 right join,不会重新调整顺序
4. 主从复制、读写分离
- 如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响 可以采用读写分离的架构。
- 读写分离解决的是,数据库的写入,影响了查询的效率。

5. 分库分表
只在数据量非常大的情况才去做
二、事务
1、事务的特性是什么?可以详细说一下吗?
原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。(不成功,便成仁)一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。(双方都是一致的状态)隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。(不受干扰)持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。(写进磁盘)
很好的例子就是转账操作
2、并发事务带来哪些问题?怎么解决这些问题呢?MySQL的默认隔离级别是?
2.1. 并发事务问题
脏读:一个事务读到另外一个事务还没有提交的数据。

不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了”幻影”。

2.2. MySQL的默认隔离级别
解决方案:对事务进行隔离
默认采用的隔离机制可重复读(不能解决幻读,但是相比其他的隔离机制,在性能和安全级别算是最优解了)

更新中》》》》》》》
参考来自:黑马程序员
相关文章:
MySQL篇
文章目录 一、MySQL-优化1、在MySQL中,如何定位慢查询?2、SQL语句执行很慢, 如何分析呢?3、了解过索引吗?(什么是索引)4、索引的底层数据结构了解过嘛 ?5、什么是聚簇索引什么是非聚簇索引 ?6、知道什么是回表查询嘛…...
图数据库Neo4j学习四——Spring Data NEO
1配置 1.1Maven依赖 <!--neo4j --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency>1.2yml配置 spring:data:neo4j:uri: bolt://localhost:76…...
UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号
版本 5.2.1 裁剪 - 剪切 - 剪切到边界 裁剪 - 高级 - 溢出策略 - 省略...
Spring Boot实践五 --异步任务线程池
一、使用Async实现异步调用 在Spring Boot中,我们只需要通过使用Async注解就能简单的将原来的同步函数变为异步函数,Task类实现如下: package com.example.demospringboot;import lombok.extern.slf4j.Slf4j; import org.springframework.s…...
<C语言> 动态内存管理
1.动态内存函数 为什么存在动态内存分配? int main(){int num 10; //向栈空间申请4个字节int arr[10]; //向栈空间申请了40个字节return 0; }上述的开辟空间的方式有两个特点: 空间开辟大小是固定的。数组在声明的时候,必须指定数组的…...
【ASPICE】:学习记录
学习记录 ASPICE中文资料什么是ASPICE过程参考模型 ASPICE全称“Automotive Software Process Improvement and Capability dEtermination”,即“汽车软件过程改进及能力评定”模型框架 ASPICE中文资料 主要资料来源 什么是ASPICE 过程参考模型...
图论--最短路问题
图论–最短路问题 邻接表 /* e[idx]:存储点的编号 w[idx]:存储边的距离(权重) */ void add(int a, int b, int c) {e[idx] b;ne[idx] h[a];w[idx] ch[a] idx ; }1.拓扑排序 给定一个 n 个点 m 条边的有向图,点的编号是 11 到 n…...
go 结构体 - 值类型、引用类型 - 结构体转json类型 - 指针类型的种类 - 结构体方法 - 继承 - 多态(interface接口) - 练习
目录 一、结构体 1、python 与 go面向对象的实现: 2、初用GO中的结构体:(实例化一个值类型的数据(结构体)) 输出结果不同的三种方式 3、实例化一个引用类型的数据(结构体) 4、…...
盘点16个.Net开源项目
今天一起盘点下,16个.Net开源项目,有博客、商城、WPF和WinForm控件、企业框架等。(点击标题,查看详情) 一、一套包含16个开源WPF组件的套件 项目简介 这是基于WPF开发的,为开发人员提供了一组方便使用自…...
记录对 require.js 的理解
目录 一、使用 require.js 主要是为了解决这两个问题二、require.js 的加载三、main.js 一、使用 require.js 主要是为了解决这两个问题 实现 js 文件的异步加载,避免网页失去响应;管理模块之间的依赖性,便于代码的编写和维护。 二、require.…...
minio-分布式文件存储系统
minio-分布式文件存储系统 minio的简介 MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置…...
Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记
这是ACMMM2019的一篇有监督暗图增强的论文,KinD其网络结构如下图所示: 首先是一个分解网络分解出R和L分量,然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理,最终将处理好的R分量和L分量融合回去。这倒是很常…...
AcWing 4575. Bi数和Phi数
文章目录 题意:思路:代码 题意: 就是给你n个数,对于每一个数y你都需要找到一个最小x使得 ϕ ( x ) ≥ y \phi(x) \ge y ϕ(x)≥y,然后再求一个最小平和。 思路: 其实最开始以来的思路就是二分,我先进行线性筛求出每个数的欧拉函数…...
《Federated Unlearning via Active Forgetting》论文精读
文章目录 1、概述2、方法实验主要贡献框架概述 3、实验结果比较方法实验结果忘却完整性忘却效率模型实用性 4、总结 原文链接: Federated Unlearning via Active Forgetting 1、概述 对机器学习模型隐私的⽇益关注催化了对机器学习的探索,即消除训练数…...
Java课题笔记~Maven基础知识
一、什么是Maven? Maven是专门用于管理和构建Java项目的工具。 它的主要功能有: 提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布……)提供了一套依赖管理机制 …...
xcode中如何显示文件后缀
xcode14.3 用不惯mac电脑真恶心,改个显示文件后缀找半天 1、首先双击打开xcode软件 2、此时,电脑左上角出现xcode字样(左上角如果看不到xcode字样,再次点击xcode软件弹出来就有了),鼠标右键它,点击setting或者Prefere…...
SpringBoot使用JKS或PKCS12证书实现https
SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…...
云原生势不可挡,如何跳离云原生深水区?
云原生是云计算领域一大热词,伴随云原生概念而来的是数字产业迎来井喷、数字变革来临、数字化得以破局以及新一波的技术红利等等。云原生即“云”原生,顾名思义是让“应用”最大程度地利用云的能力,发挥云价值的最佳路径。具体来说࿰…...
python的decimal或者叫Decimal,BigDecimal
前言 在python中进行小数计算时,很容易发生精度错误问题!!!!一定要注意!!!或者说,只要进行小数的运算都要用decimal。如:银企对账;工程计算等等在…...
Mac环境变量问题
查询环境变量 echo $PATH 查询当前使用的Shell,这里注意SHELL需要大写 echo $SHELL >>>如果输出的是/bin/zsh,说明使用的是zsh。zsh读取的个人配置文件是~/.zshrc (mac10.15.x 后对应的是~/.zprofile) >>>如果输出的是/bin/bash&…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
