MySQL面试重点-2

news2024/11/19 15:17:38

16. MySQL数据引擎:

引擎分类:

show engines命令查看数据库支持的存储引擎。

描述一下InnoDB和MyISAM的区别?**

  • InnoDB存储限制64TB,而MyISAM存储限制256TB;
  • InnoDB支持事物,而MyISAM不支持;
  • InnoDB支持外键,而MyISAM不支持;
  • InnoDB支持行级锁(默认)+表级锁,而MyISAM支持表级锁;
  • InnoDB支持MVCC(多版本并发控制技术), 而MyISAM不支持;
  • InnoDB即支持聚簇索引又支持非聚簇索引,而MyISAM 只支持非聚簇索引;
  • InnoDB不支持全文索引(5.6版本之后支持),而MyISAM支持。

如何选择?

现在MySQL的默认存储引擎已经变成了InnoDB,推荐使用InnoDB:

  • 1. 是否需要支持事务,如果需要选择InnoDB,如果不需要选择MyISAM;
  • 2. 如果表的大部分请求都是读请求,可以考虑MyISAM,如果既有读也有写,使用InnoDB。

17. 描述一下MySQL主从复制的机制的原理?MySQL主从复制主要有几种模式?(没啥印象)

原理:

  • 从库会生成两个线程:I/O线程和SQL线程;
    • I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay log(中继日志)文件中;
    • SQL线程会读取relay log文件中的日志,并解析成SQL语句,并逐一执行。
  • 同步时,主库会生成一个dump线程,用来给从库I/O线程传binlog。

模式:

一主一从、主主复制、一主多从、多主一从、联级复制。

主从同步延迟问题:*

  • 原因:
    • DML和DDL的IO操作是随机的,不是顺序,成本很高;
    • 主库在高并发时,从库的SQL线程处理不过来;
    • Slave中有大型Query语句产生了锁等待。
  • 解决:
    • 提高机器性能;
    • 业务分库,一主多从;
    • 加缓存层。

18. 如何优化SQL,查询计划(Explain)的结果中看哪些些关键数据?

前提:**

  • 做好表结构设计,相关字段提前加索引。
  • 业务处理,减少数据库连接;增加缓存层等。

如何优化:

  • 开启慢查询日志(不说,因为没有实战经验)。
  • 查询的优化:
    • 减少连接次数;
    • 返回更少的数据;
    • 加索引,并且避免全表扫描,注意查看索引是否生效,是否效率高。
  • 合理的分库分表。
  • 数据库访问优化(建立数据库连接池,建索引)。

Explain作用:

模拟MySQL优化器运行SQL语句,了解MySQL如何处理你的SQL语句。分析SQL查询语句或是表结构的性能瓶颈。

Explain解释:

  • id列(数据列的执行顺序)
  • select_type列(数据读取操作的操作类型)
  • table列(该行数据是关于哪张表)
  • type列(访问类型,重点关注):
    • 由好到差system > const > eq_ref > ref > range > index > ALL,一般来说,保证查询至少达到range级别,最好能达到ref。
    • system:表只有一条记录(等于系统表),这是const类型的特例,平时业务中不会出现。
    • const:通过索引一次查到数据,该类型主要用于比较primary key 或者unique 索引,因为只匹配一行数据,所以很快。
    • eq_ref:唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或者唯一索引扫描。
    • ref:非唯一索引扫描,返回匹配某个单独值得所有行,本质上是一种索引访问,它返回所有匹配某个单独值的行。
    • range:只检索给定范围的行,使用一个索引来选着行。key列显示使用了哪个索引。一般在你的WHERE 语句中出现between 、< 、> 、in 等查询,这种给定范围扫描比全表扫描要好。因为他只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。
    • index:FUll Index Scan 扫描遍历索引树(扫描全表的索引,从索引中获取数据)。
    • ALL:全表扫描 从磁盘中获取数据 百万级别的数据ALL类型的数据尽量优化。
  • possible_keys列(显示可能应用在这张表的索引)
  • keys列(实际使用到的索引,重点关注)
  • ken_len列(索引中使用的字节数,重点关注)
  • ref列(显示索引的哪一列被使用)
  • rows列(每张表有多少行被优化器查询,重点关注)
  • Extra列(扩展属性):Using filesort 、Using temporary 、 Using index ....
    • using filesort:排序的字段没有使用索引
    • Using temporary : 使用了临时表保存中间结果

https://www.cnblogs.com/gdwkong/articles/8505125.html

19. 描述一下MySQL的乐观锁和悲观锁,锁的种类?

乐观锁:

乐观锁并不是数据库自带的,需要自己去实现,一般情况下,我们会在表中新增一个version字段,每次更新数据version+1,在进行提交之前会判断version是否一致。

悲观锁:

MySQL中的绝大部分锁都是悲观锁,按照粒度可以分为行锁和表锁:

  • 行锁:***
    • 共享锁:当读取一行记录的时候,为了防止别人修改,则需要添加S锁。
    • 排它锁:当修改一行记录的时候,为了防止别人同时进行修改,则需要添加X锁。

    • 记录锁(Record Lock):添加在行索引上的锁。
    • 间隙锁(Gap Lock):它的锁定范围是索引记录之间的间隙,针对可重复读以上隔离级别。
    • 临键锁(Next-key Lock):记录锁 + 间隙锁。
  • Tips:
    • 如果不需要解决幻读问题,不要加临键锁和间隙锁。
    • 加锁方式:SELECT ... for update;

  • 表锁:
    • 意向锁:在获取某行的锁之前,必须要获取表的锁,分为意向共享锁(IS),意向排它锁(IX)。
    • 自增锁:对自增字段所采用的特殊表级锁。

锁的应用:

事务的隔离级别。

MySQL加锁情况分析:***

《见MySQL加锁》

锁模式(lock_mode)的含义: -> show engine innodb status\G; 查看

  • IX:意向排它锁
  • IS:意向共享锁
  • X:锁定记录本身和记录之前的间隙,即临键锁
  • S:锁定记录本身和记录之前的间隙,即临键锁
  • X,REC_NOT_GAP:只锁定记录本身,即记录锁
  • S,REC_NOT_GAP:只锁定记录本身,即记录锁
  • X,GAP:间隙锁,不锁定记录本身
  • S,GAP:间隙锁,不锁定记录本身
  • X,GAP,INSERT_INTENTION:插入意向锁

20. MySQL数据库在什么情况下出现死锁?产生死锁的四个必要条件?如何解决死锁?

概念:

两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

产生死锁的四个必要条件:

  • 互斥条件:任何时刻一个资源只能被一个进程使用,其他进程只能等待。
  • 请求和保持条件:进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不放。
  • 不剥夺条件:进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
  • 环路等待条件:A想占有B在等待的资源(B等待A释放),B想占有A在等待的资源(A等待B释放)形成环路。

如何解决死锁?

  • (1)顺序加锁、顺序访问表,可以大大降低死锁机会。
  • (2)容易产生死锁的业务,可以升级锁的颗粒度(表级锁),减少死锁产生的概率。
  • (3)设置超时时间,若事务超时就回滚,另一个等待的事务就能得以继续执行。

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

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

相关文章

(13)DroneCAN 适配器节点(一)

文章目录 前言 1 特点 2 固件 3 ArduPilot固件DroneCAN设置 4 DroneCAN适配器节点 前言 这些节点允许现有的 ArduPilot 支持的外围设备作为 DroneCAN 或 MSP 设备适应 CAN 总线。这也允许扩展自动驾驶仪硬件的功能。如允许 I2C 设备&#xff08;如罗盘或空速&#xff09…

maven的生命周期是什么?看这一篇就够了!

大家可能都知道maven是什么&#xff1f;Maven 是一个流行的项目管理工具&#xff0c;用于构建、发布和管理 Java 项目。那么我们在用maven将项目打包成一个jar包的时候&#xff0c;他是怎么运作的&#xff0c;mvn clean install都做了哪些小动作&#xff1f;其中的package和ins…

《web应用技术》第十二次课后作业

1.servlet基础知识 1.定义 Java Servlet 是运行在 Web 服务器或应用服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 2.生命周期 init 方法被设计成只调用一次。它在第一次创建 Servlet 时被…

Python酷库之旅-第三方库openpyxl(07)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

SVM算法-人脸识别背后技术详解

引言 支持向量机&#xff08;SVM&#xff09;是一种强大的监督学习算法&#xff0c;广泛应用于分类和回归任务中。本文将详细介绍SVM算法在人脸识别任务中的应用&#xff0c;并通过代码示例来展示其背后的技术精髓。我们将分三大部分来展开&#xff0c;本部分将重点介绍SVM算法…

数据资产与人才战略:聚焦数据人才培养与引进,构建专业团队,为企业数据资产增值提供源源不断的智力支持,确保数据资产的高效利用与持续增长

一、引言 随着信息技术的飞速发展&#xff0c;数据已成为企业最宝贵的资产之一。在数字化时代&#xff0c;数据资产的高效利用和持续增长对于企业的竞争力至关重要。而要实现这一目标&#xff0c;人才是关键。本文将围绕数据资产与人才战略展开讨论&#xff0c;重点分析数据人…

【喜报】全球第三名HCIE-openEuler在誉天诞生!

2024年6月18日&#xff0c;誉天首期HCIE-openEuler班刘同学一次性通过HCIE-openEuler实验考试&#xff0c;并且成为全球第三位HCIE-openEuler专家,刘同学也是誉天首位通过该方向的HCIE学员。 同时恭喜刘同学获得誉天欧拉HCIE专属奖学金5000元&#xff0c;让我们祝贺他&#xff…

我的常见问题记录

1,maven在idea工具可以正常使用,在命令窗口执行出现问题 代码: E:\test-hello\simple-test>mvn clean compile [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for org.consola:simple-test:jar…

win11 + ubuntu linux双系统:开机直接进入windows修复

https://zhuanlan.zhihu.com/p/666702893 这种 双系统直接进入win 的问题&#xff0c;应该属于引导坏了&#xff0c;即grub坏了。 原因&#xff1a;笔记本送修了&#xff0c;没拆掉硬盘&#xff0c;可能引导被售后搞坏了。 在win-磁盘管理中查看分区&#xff0c;linux的分区…

文献阅读:通过双线性建模来破译神经元类型连接的遗传密码

文献介绍 文献题目 Deciphering the genetic code of neuronal type connectivity through bilinear modeling 研究团队 Mu Qiao&#xff08;美国加州理工学院&#xff09; 发表时间 2024-06-10 发表期刊 eLife 影响因子 7.7 DOI 10.7554/eLife.91532.3 摘要 了解不同神经元…

仓库管理系统01--数据库介绍

1、表结构 1&#xff09;UserInfo 用户表 2&#xff09;Supplier供应商表 3&#xff09;Store 仓库表 4&#xff09;其他表 Customer 客户表&#xff0c;Spec 规格表&#xff0c;GoodsType 货物类别表&#xff0c;Goods 货物表&#xff0c;InStore 入库表&#xff0c;OutSto…

STM32 - LED灯 蜂鸣器

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

mysql学习——SQL中的DQL和DCL

SQL中的DQL和DCL DQL基本查询条件查询聚合函数分组查询排序查询分页查询 DCL管理用户权限控制 学习黑马MySQL课程&#xff0c;记录笔记&#xff0c;用于复习。 DQL DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记…

为什么能通过文本分析情感?

通过文本分析情感&#xff0c;通常称为情感分析&#xff08;Sentiment Analysis&#xff09;或意见挖掘&#xff08;Opinion Mining&#xff09;&#xff0c;是自然语言处理&#xff08;NLP&#xff09;的一个分支。这项技术能够识别和提取文本中的主观信息&#xff08;对呀&am…

# 消息中间件 RocketMQ 高级功能和源码分析(八)

消息中间件 RocketMQ 高级功能和源码分析&#xff08;八&#xff09; 一、消息中间件 RocketMQ 源码分析&#xff1a;实时更新消息消费队列与索引文件流程说明 1、实时更新消息消费队列与索引文件 消息消费队文件、消息属性索引文件都是基于 CommitLog 文件构建的&#xff0…

pdf转word在线转换怎么操作?学会这3个,轻松完成转换

pdf转word在线转换怎么操作&#xff1f;PDF转Word在线转换的重要性不言而喻&#xff0c;特别是在需要编辑或修改PDF文件内容时。它极大地简化了繁琐的复制粘贴流程&#xff0c;允许我们直接在Word文档中修改文字、调整格式&#xff0c;大大提高了工作效率。无论是学术研究、商务…

Modsecurity安装+Nginx+腾讯云CentOS+XSS-Labs靶场+WAF规则

君衍. 一、项目环境介绍二、ModSecurity介绍1、Modsecurity基本概述2、Modsecurity工作原理3、Modsecurity功能特点4、Modsecurity优点5、Modsecurity缺点 三、Nginx介绍及配置文件1、Nginx基本概述2、Nginx应用场景3、正向代理4、反向代理5、负载均衡6、动静分离7、主页面路径…

【LinuxC语言】深入理解IP地址与端口号

文章目录 前言端口号IP地址IP地址的分类主机地址与网络地址多播是什么子网掩码特殊的地址与私有的地址总结前言 在计算机网络中,IP 地址和端口号是两个非常重要的概念。IP 地址用于标识网络上的设备,而端口号则用于在同一设备上区分不同的服务或应用。在 Linux C 语言编程中…

一文学会用RKE部署高可用Kubernetes集群

k8s架构图 RKE简介 RKE全称Rancher Kubernetes Engine,是一个快速的,多功能的 Kubernetes 安装工具。通过RKE,我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统,包括 MacOS、Linux 和 Windows。 K8S原生安装需要的先决条件较多,比如说需要预安装kubeadm,kub…

GPT-5大幅推迟?OpenAI CTO称将在2025年底到2026年初推出

GPT-5大幅推迟&#xff1f;OpenAI CTO称将在2025年底到2026年初推出 OpenAI CTO同时透露&#xff0c;GPT-5性能将有巨大飞跃&#xff0c;在某些特定任务中达到“博士水平”智能&#xff0c;此前市场曾预测GPT-5可能在2023年底或2024年夏季发布。 一再跳票的GPT-5可能大幅推迟…