MySQL夺命10问,你能坚持到第几问?

大厂面试快问快答,10分钟搞定MySQL夺命20问,你都能接住吗? 号外号外!《死磕 Java 并发编程》系列连载中,大家可以关注一波: 「死磕 Java 并发编程05」阿里面试失败后,一气之下我图解了Java中18把锁 「死磕 Java 并发编程04」说说Java Atomic 原子类的实现原理 「死磕 Java 并发编程03」阿里二面,面试官:说说 Java CAS 原理? 「死磕 Java 并发编程02」面试官:说说什么是 Java 内存模型(JMM)? 「死磕 Java 并发编程01」10张图告诉你Java并发多线程那些破事 先看下目录: 1说说. 阅读详情

MySQL在面试中经常被问到,本文总结了面试中的经典问题。

1.数据库三大范式是什么?

第一范式:每个列都不可以再拆分。

第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。

第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。

比如性能。事实上我们经常会为了性能而妥协数据库的设计。

2.mysql有关权限的表都有哪几个?

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。

这些权限表分别是user,db,table_priv,columns_priv和host。

user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。

db权限表:记录各个帐号在各个数据库上的操作权限。

table_priv权限表:记录数据表级的操作权限。

columns_priv权限表:记录数据列级的操作权限。

host权限表:配合db权限表对给定主机上的数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。

3.SQL语句主要分为哪几类?

·数据定义语言DDL(Data Ddefinition Language)CREATE,DROP,ALTER

主要为以上操作,即对逻辑结构等有操作的,其中包括表结构,视图和索引。

·数据查询语言DQL(Data Query Language)SELECT

这个较为好理解,即查询操作,以select关键字。

各种简单查询,连接查询等都属于DQL。

·数据操纵语言DML(Data Manipulation Language)INSERT,UPDATE,DELETE

主要为以上操作,即对数据进行操作的,对应上面所说的查询操作DQL与DML共同构建了多数初级程序员常用的增删改查操作。查询是较为特殊的一种,被划分到DQL中。

·数据控制功能DCL(Data Control Language)GRANT,REVOKE,COMMIT,ROLLBACK

主要为以上操作,即对数据库安全性完整性等有操作的,可以简单的理解为权限控制等。

4.什么是死锁?怎么解决?

死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。

常见的解决死锁的方法:

如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会;

在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概率;

对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;

如果业务处理不好可以用分布式事务锁或者使用乐观锁。

5.什么是脏读?幻读?不可重复读?

脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新了原有的数据。

幻读(Phantom Read):在一个事务的两次查询中,数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。

6.SQL的生命周期?

①应用服务器与数据库服务器建立一个连接

②数据库进程拿到请求sql

③解析并生成执行计划,执行

④读取数据到内存并进行逻辑处理

⑤通过步骤一的连接,发送结果到客户端

⑥关掉连接,释放资源

7.MySQL数据库cpu飙升到100%的话怎么处理?

当cpu飙升到100%时,先用操作系统命令top命令观察是不是mysqld占用导致的。

如果不是,找出占用高的进程,并进行相关处理。

如果是mysqld造成的,show processlist,看看里面跑的session情况,是不是有消耗资源的sql在运行。找出消耗高的sql,看看执行计划是否准确,index是否缺失,或者实在是数据量太大造成。

一般来说,肯定要kill掉这些线程(同时观察cpu使用率是否下降),等进行相应的调整(比如说加索引、改sql、改内存参数)之后,再重新跑这些SQL。

也有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。

8.MySQL主从复制解决了哪些问题?

主从复制的作用是:

主数据库出现问题,可以切换到从数据库。可以进行数据库层面的读写分离。可以在从数据库上进行日常备份。

数据分布:随意开始或停止复制,并在不同地理位置分布数据备份

负载均衡:降低单个服务器的压力

高可用和故障切换:帮助应用程序避免单点失败

升级测试:可以用更高版本的MySQL作为从库

9.MySQL常用的备份工具有哪些?

常用备份工具mysql复制:

逻辑备份(mysqldump,mydumper)

物理备份(copy,xtrabackup)

备份工具差异对比:

·mysql复制相对于其他的备份来说,得到的备份数据比较实时。

·逻辑备份:分表比较容易。mysqldump备份数据时是将所有sql语句整合在同一个文件中;mydumper备份数据时是将SQL语句按照表拆分成单个的sql文件, 每个sql文件对应一个完整的表。

·物理备份:拷贝即可用,速度快。

copy:直接拷贝文件到数据目录下,可能引起表损坏或者数据不一致。

xtrabackup对于innodb表是不需要锁表的,对于myisam表仍然需要锁表。

10.MySQL备份计划如何制定?

视库的大小来定。一般来说100G内的库,可以考虑使用mysqldump来做,因为mysqldump更加轻巧灵活,备份时间选在业务低峰期,可以每天进行都进行全量备份(mysqldump备份出来的文件比较小,压缩之后更小)。

100G以上的库,可以考虑用xtranbackup来做,备份速度明显要比mysqldump要快。

一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

Mac和VScode配置fortran macOS系统 vscode fortran gfortran 终端 阅读详情

相关推荐

本地部署大模型 vs 网页版大模型区别

fill:#333;color:#333;color:#333;fill:none;本地服务器/工作站硬件资源私有化部署GPU集群高速存储模型文件训练框架推理引擎。

Ds-Rag的博 1711

MySQL夺命16问,你能坚持到第几问?

原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性:执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性:并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性:一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。常见的解决死锁的方法。

Spontaneous_0的博客 1440

uniCloud云存储进阶:七牛云扩展存储从开通、绑定域名到批量上传的完整实战

本文详细介绍了uniCloud云存储进阶实践,重点讲解如何通过七牛云扩展存储实现从开通、绑定域名到批量上传的完整流程。内容涵盖成本优势分析、域名备案方案、SSL证书配置、多文件并发上传控制等实战技巧,并提供可直接复用的代码示例,帮助开发者高效构建内容社区类应用。

weixin_26985923的博客 468

《我要进大厂》之mysql夺命连环13问

想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里? 1. 能说下myisam 和 innodb的区别吗? myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。 innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。 2. 说下mysql的索引有哪些吧,聚簇和非聚簇

艾小仙的专栏 4573

[小技巧] 如何复制知乎电子书中的文字和图片

文章目录一、背景二、复制文字1.最简单的方法(适合短小文字)2. 进阶方法(适合大段文字)三、复制图片四、注意事项 一、背景 有时候希望从书中摘录一部分文字作为笔记,但是知乎电子书阅读时候是禁止copy的,要么手打,要么OCR,给学习带来了一些不便。 审查元素后发现,知乎电子书是把文字分成一段一段的,试图F12直接copy不太方便。 本问将以谷歌Chrome浏览器为例,给出复制小技巧。 二、复制文字 1.最简单的方法(适合短小文字) 选中你需要的文字,左键单击不放,直接拖到地址栏。 然后可以从地址栏中

江南蜡笔小新 9246

基于Pixhawk与OpenMV的无人机视觉引导精准降落系统设计与实现

本文详细介绍了基于Pixhawk飞控与OpenMV视觉模块的无人机精准降落系统设计与实现。系统通过OpenMV识别Apriltag标签,结合MAVLink通信将视觉数据发送给Pixhawk,实现厘米级精准降落。文章涵盖硬件连接、软件配置、核心代码逻辑解析及实战调试技巧,为无人机自动充电、物流配送等场景提供可靠解决方案。

weixin_29189377的博客 320

MySQL夺命66问,面试必看!(荣耀典藏版)

mysql面试集合,史上最全面试题,阅读大概需要30-50分钟,欢迎小伙伴们点赞收藏!!!

人生若只初相见@的博客 4万+

手把手教你逆向分析某里系bx-ua参数(以225版本为例)

本文详细解析了某里系应用bx-ua参数的逆向工程实战方法,重点拆解其三层加密体系(二进制加密、字符替换和Base64编码)。通过工具链配置和实战案例,帮助开发者掌握逆向分析技巧,适用于合法合规的安全研究和加密技术评估场景。

weixin_33220360的博客 410

MySQL面试必会的10个核心问题(附详细答案解析)

自己动手搭MySQL环境(Docker一分钟搞定)用sysbench做压力测试看官方文档的InnoDB章节在测试库故意制造锁等待,用show engine innodb status分析记住,面试不是背答案大赛,理解原理+实战经验才是王炸组合!下次面试遇到MySQL问题,把这些知识点像报菜名一样甩出来,保证让面试官怀疑到底是谁在面试谁(手动狗头)!

siliconscribe的博客 1127

【网络安全】Centos7安装杀毒软件----ClamAV

Clam AntiVirus是一个Linux系统上使用的反病毒软件包。主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库。

你在看屏幕的同时,屏幕也在注视着你 8828

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5785

MySQL夺命15问,你能坚持到第几问?

来源:https://jeames.blog.youkuaiyun.com/?type=blog前言 MySQL在面试中经常被问到,本文总结了面试中的经典问题。1. 数据库三大范式是什么? 第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据...

Java团长的博客 636

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL夺命连环15问,你能坚持到第几问?

本篇文章中列出的有关MySQL的问题,都是作者在平时学习中遇到或者面试中被问到的问题,针对每个问题作者都做了自己的梳理和总结,整篇文章内容很丰富,希望能给读者带来实际的帮助。作为JAVA开发程序员,与数据库打交道是必不可少的。MySQL作为当下热门的一款数据库,被广泛的应用到了企业实际开发中,同时在面试中也占了很大的比重,一定要熟练掌握。

qq_52173163的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Redis夺命十二问,你能扛到第几问?

大家好,我是飘渺Redis是面试中绕不过的槛,只要在简历中写了用过Redis,肯定逃不过。今天我们就来模拟一下面试官在Redis这个话题上是如何一步一步深入,全面考察候选人对于Redis的...

飘渺Jam的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Oracle夺命连环25问,你能坚持第几问?

文人从事多年面试工作,将Oracle面试分享给大家,希望大家顺利拿下offer

IT邦德 8903

Docker夺命连环15问,你能坚持第几问?

本文总结了Docker常见的问题和坑,采用问答的形式,分享给大家

IT邦德 2万+

MySQL面试夺命连环27问

1、MySQL 逻辑架构分层 把 MySQL 分成三层,跟客户端对接的连接层,真正执行操作的服务层,和跟硬件打交道的存储引擎层。 Mysql逻辑架构图主要分三层: (1)第一层负责连接处理,授权认证,安全等等 (2)第二层负责编译并优化SQL (3)第三层是存储引擎。 连接层 我们的客户端要连接到 MySQL 服务器 3306 端口,必须要跟服务端建立连接,那么管理所有的连接,验证客户端的身份和权限,这些功能就在连接层完成。 服务层 连接层会把 SQL 语句交给服务层,这里面又包...

何哥的博客 1万+

索引夺命10连问,你能顶住第几问?

简单来说,索引就是数据的目录。就像一本书的目录能帮你快速找到内容一样,数据库索引能帮你快速定位数据。sql-- 没有索引的查询(全表扫描) SELECT * FROM users WHERE name = '苏三';-- 需要遍历所有记录 -- 有索引的查询(索引扫描) CREATE INDEX idx_name ON users(name);SELECT * FROM users WHERE name = '苏三';-- 通过索引快速定位覆盖索引:索引包含了查询需要的所有字段,不需要回表查询sql。

Java架构师之路的博客 590
上一篇: 为什么智慧城市需要数字孪生?
下一篇: 是否需要提高代码阅读能力?这有技巧
捷码小编
博客等级 码龄5年 397粉丝 255原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捷码小编

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值