java重点学习-mysql

news2024/9/21 0:28:21

二 mysql

2.1 如何定位慢查询?

1:介绍一下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢,压测的结果大概5秒钟)

2.我们系统中当时采用了运维工具(Skywalking),可以监测出哪个接口,最终因为是sql的问题

3.在mysql中开启了慢日志查询,我们设置的值就是2秒,一旦sql执行超过2秒就会记录到日志中(调试阶段)

2.2 SQL语句执行很慢,如何分析呢?

可以采用MySQL自带的分析工具 EXPLAIN

通过key和key len检查是否命中了索引(索引本身存在是否有失效的情况)

通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描

通过extra建议判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复

2.3 了解过索引吗?(什么是索引)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)

提高数据检索的效率,降低数据库的IO成本(不需要全表扫描)

通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

索引的底层数据结构了解过嘛?

MySQL的InnoDB引擎采用的B+树的数据结构来存储索引

阶数更多,路径更短

磁盘读写代价B+树更低,非叶子节点只存储指针,叶子阶段存储数据

B+树便于扫库和区间查询,叶子节点是一个双向链表

2.4 知道什么叫覆盖索引嘛 ?

覆盖索引是指查询使用了索引,返回的列,必须在索引中全部能够找到

使用id查询,直接走聚集索引查询,一次索引扫描,直接返回数据,性能高。如果返回的列中没有创建索引,有可能会触发回表查询,尽量避免使用select*

MYSQL超大分页怎么处理?

问题:在数据量比较大时,limit分页查询,需要对数据进行排序,效率低

解决方案:覆盖索引+子查询

2.5 索引创建原则有哪些?

1).针对于数据量较大,且查询比较频繁的表建立索引。单表超过10万数据(增加用户体验)

2).针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。

3).尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高

4).如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。

5).尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。

6).要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。

7).如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含NULL值时,它可以更好地确定哪个索引最有效地用于查询。

2.6 什么情况下索引会失效?

① 违反最左前缀法则

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

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

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

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

2.7 谈谈你对sql的优化的经验

·---表的设计优化(参考阿里开发手册《嵩山版》)

① 比如设置合适的数值(tinyint int bigint),要根据实际情况选择

② 比如设置合适的字符串类型(char和varchar)char定长效率高,varchar可变长度,效率稍低

---SQL语句优化

① SELECT语句务必指明字段名称(避免直接使用select*)

② SQL语句要避免造成索引失效的写法

③ 尽量用union all代替union union会多一次过滤,效率低

④避免在where子句中对字段进行表达式操作

G)Join优化 能用innerioin 就不用left join right join,如必须使用 一定要以小表为驱动内连接会对两个表进行优化,优先把小表放到外边,把大表放到里边。leftjoin 或 right join,不会重新调整顺序

2.8 事务的特性是什么?

原子性( Atomicity)

-致性( Consistency )

隔离性( lsolation )

●持久性( Durability

ACID,分别指的是:原子性、一致性、隔离性、持久性;我举个例子A向B转账500,转账成功,A扣除500元,B增加500元,原子操作体现在要么都成功,要么都失败

在转账的过程中,数据要一致,A扣除了500,B必须增加500

在转账的过程中,隔离性体现在A像B转账,不能受其他事务干扰

在转账的过程中,持久性体现在事务提交后,要把数据持久化(可以说是落盘操作)

2.9 并发事务带来哪些问题?怎么解决这些问题呢?MySQL的默认隔离级别是?

并发事务的问题:.

① 脏读:一个事务读到另外一个事务还没有提交的数据。

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

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

隔离级别:

①READ UNCOMMITTED 未提交读脏读、 不可重复读、幻读

② READ COMMITTED 读已提交 不可重复读、幻读

③ REPEATABLE READ 可重复读 幻读

④ SERIALIZABLE 串行化

2.10 undo log和redo log的区别

redo log:记录的是数据页的物理变化,服务宕机可用来同步数据

undo log :记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据.

redo log保证了事务的持久性undolog保证了事务的原子性和一致性

其中redolog日志记录的是数据页的物理变化,服务机可用来同步数据,而undolog不同,它主要记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据,比如我们删除一条数据的时候,就会在undolog日志文件中新增一条delete语句,如果发生回滚就执行逆操作;

redolog保证了事务的持久性,undolog保证了事务的原子性和一致性

2.11 事务中的隔离性是如何保证的呢?(你解释一下MVCC)

2.12 mysql 主从同步原理

MVSQL主从复制的核心就是二进制日志binog(DDL(数据定义语言)语句和 DML(数据操纵语言)语句)① ① 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。

② 从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log。

③ 从库重做中继日志中的事件,将改变反映它自己的数据

2.13分库分表

分库之后的问题:

  • 1.分布式事务一致性问题.
  • 2.跨节点关联查询.
  • 3.跨节点分页、排序函数
  • 4.主键避重

应该使用 分库分表中间件:

  • sharding-sphere
  • mycat

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

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

相关文章

JAVA使用海康SDK调用抓图功能

1.SDK下载 下载网址:海康开放平台SDK下载地址 注:根据需要操作系统下载对应SDK 本文使用WIndows操作系统 2.海康Demo测试 1)IDEA打开项目ClientDemo 2)ClientDemo进行适当修改,留下加载SDK和NET_DVR_CaptureJPEGPic…

Service Android四大组件 小白秒懂

目录 Service简介 1.Service作用 2.Service特点 3.两种启动方式的生命周期 4.Service相关内部类 Service简介 1.Service作用 后台长期处理耗时的逻辑 Service不存在UI界面,Service在后台运行,不能与用户进行交互功能 2.Service特点 后台运行&…

域名证书,泛域名证书,sni

文章目录 前言一、证书1.全域名证书2.泛域名证书 二、域名证书的使用1、浏览器请求域名证书流程对全域名证书的请求流程对泛域名证书的请求流程ssl client-hello携带server name 报文 2、浏览器对证书的验证流程 三、域名证书和sni 前言 本文介绍了泛域名证书和全域名证书的区别…

【QT】析构函数执行引发异常

在析构函数执行完成后引发异常,程序崩溃 造成异常的原因 在布局添加QSpacerItem引起的异常,使用try…catch无法捕获 QSpacerItem *spacer new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);QHBoxLayout *hLayout2 new QHBoxLayout;…

搭建和使用OnFinality?

目录 您可以用OnFinality做什么? 举个例子 注册OnFinality账户 部署专用节点 入门 选择网络 配置新节点 节点规格 启动配置 检查您的新节点 选择计费方式 恭喜,现在去构建你的 dApp 吧! 您可以用OnFinality做什么? On…

差分传输与单端传输

差分与单端传输 本页讨论模拟信号传输中的两个概念:“单端”和“差分”。模拟信号用于将模拟仪器的输出传送到数字转换器。虽然数字信号对干扰的容忍度相对较高,但模拟信号却可能受到环境中电磁波的干扰和改变。本文档将解释这一问题,并描述…

C++学习笔记----6、内存管理(一)---- 使用动态内存(3)

3.2、对象数组 对象数组与原型/基础类型的数组没有什么不同,除了元素的初始化之外。当你使用new[N]去分配N个对象,就把N个连续的块空间分配出去了,每一个块空间可以放一个单独的对象。对于对象数组,New[]对每一个对象自动调用0参数…

Linux虚拟机安装(CentOS9)

需要自己设置一下内存,处理器,以及镜像文件 **************************************************************** 设置完硬件后,启动虚拟机,开始配置操作系统 选择英文 这里需要改三个地方 1. 2. 3. 设置root账户的密码 全部完…

Anaconda安装教程就看这里

Anaconda安装教程就看这里 1 了解Anaconda2 为什么要安装Anaconda3 安装Anaconda3.1 下载并安装3.2 环境配置 4 管理python环境4.1 NAVIGATOR创建python3.94.2 命令行创建python3.84.3 Pycharm中通过conda管理python环境 1 了解Anaconda Anaconda是易于安装的包管理器、环境管…

RLHF PPO DPO

生成式大模型的RLHF技术(一):基础​​​​​​​ DPO: Direct Preference Optimization 论文解读及代码实践 深入对比 DPO 和 RLHF 深入理解DPO(Direct Preference Optimization)算法

数据结构---链表

//链表的创建 Link_t *create_link() {Link_t *plink malloc(sizeof(Link_t));if(NULL plink){perror("fail plink");return NULL;}plink->phead NULL;plink->clen 0;return plink; } //头插 int push_link_head(Link_t *plink, DataType data) {Link_Nod…

九月最新蜘蛛池|泛码网的SEO工具怎么样?

在当今数字化的时代,网络营销已经成为企业和个人推广的重要手段。而在众多网络营销方式中,搜索引擎优化(SEO)备受关注。随着 SEO 的发展,各种 SEO 工具也如雨后春笋般涌现。那么,这些 SEO 工具到底有没有用…

AI制作情侣头像副业项目,每天只需2小时,收入是我工资的三倍(附教程)

现在好赚钱的项目模式,一般都是提供情绪价值, 用AI制作情侣头像这个就是一个非常不错的情绪价值输出。 这个项目被真名是可以落地实操的,做好了日入500是可以有的。(文末免费领取教程) 项目介绍 在当下社会中,年轻情侣都喜欢用…

SpringFrameWork学习笔记

本笔记基于【尚硅谷新版SSM框架全套视频教程,Spring6SpringBoot3最新SSM企业级开发】https://www.bilibili.com/video/BV1AP411s7D7?vd_sourcea91dafe0f846ad7bd19625e392cf76d8 总结 资料获取网址:https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWF 技术…

用 coze 做一个简单的外卖评价助手

大家有没有遇到过这种情况?点外卖时看到"好评返现金"的活动,可是又不想输入太多内容,那该怎么办呢? 别担心,今天我就来教大家如何利用 Coze 智能体,只需要一张简单的图片就能自动帮你生成好评! …

2024年建筑电工(建筑特殊工种)证模拟考试题库及建筑电工(建筑特殊工种)理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)证模拟考试题库及建筑电工(建筑特殊工种)理论考试试题是由安全生产模拟考试一点通提供,建筑电工(建筑特殊工种)证模拟考试题库是根据建筑电工(建筑特殊工种)最新版教材&#…

Phalcon 增删改查的搭建过程

一 结果展示 先展示效果: 1 查询: 2 删除 3 插入 插入之前,数据库里面表的数据如下: 插入之后:

Git基础教程:掌握版本控制的秘密

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 什么是Git 🚀 在本系列博客中所实现的目标 一: 🔥 Git 初识 二: 🔥 Git 安装 🍊 Linux-c…

结构型设计模式—组合模式

结构型设计模式—组合模式 欢迎长按图片加好友,我会第一时间和你分享持续更多的开发知识,面试资源,学习方法等等。 组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示…

亿图图示下载安装教程EdrawMax Pro 13版超详细图文教程

亿图图示下载安装教程EdrawMax Pro 13版超详细图文教程: 亿图图示是一款功能强大的综合绘图软件,具有以下特点和功能 丰富的绘图类型:涵盖 210 余种办公绘图类型,包括流程图、思维导图、信息图、工业设计、组织架构图、平面设计…