Mysql面试夺命18问

2024-05-15 21:20
文章标签 mysql 面试 18 database 夺命

本文主要是介绍Mysql面试夺命18问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录


1.简要说明一下数据库范式

  • 第一范式: 属性不可再分.
  • 第二范式: 在一范式的基础上, 要求数据库表中的每个实例或行必须可以被惟一地区分. 通常需要为表加上一个列, 以存储各个实例的惟一标识. 这个惟一属性列被称为主关键字或主键.
  • 第三范式: 在二范式的基础上, 要求一个数据库表中不包含已在其它表中已包含的非主关键字信息. 所以第三范式具有如下特征:1). 每一列只有一个值. 2). 每一行都能区分. 3). 每一个表都不包含其他表已经包含的非主关键字信息.

2.一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15、16、17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?

  • 这条记录的ID是18。因为MySQL的自增主键是基于已使用的最大值来确定的,即使你删除了某些记录,已使用的最大值(在这个例子中是17)仍然会被保留,所以下一条记录的ID会是18。

3.主键和候选键有什么区别?

  • 主键是表中的唯一标识符,用于唯一确定表中的每一行。一个表只能有一个主键。候选键也是能唯一确定表中每一行的列或列的组合,但一个表可以有多个候选键。
  1. 什么是事务?MySQL中如何支持事务?
  • 事务是一系列操作,这些操作要么完全执行,要么完全不执行,以确保数据库的完整性。MySQL通过InnoDB存储引擎支持事务,提供了ACID(原子性、一致性、隔离性、持久性)的特性。
  1. LIKE声明中的%和_是什么意思?
  • %代表零个、一个或多个字符,而_代表一个单一的字符。
  1. 如何在Unix和Mysql时间戳之间进行转换?
  • 可以使用MySQL的日期和时间函数来进行转换,如FROM_UNIXTIME()和UNIX_TIMESTAMP()。
  1. 我们如何得到受查询影响的行数?
  • 可以使用ROW_COUNT()函数来获取受上一个SQL语句影响的行数。
  1. Mysql查询是否区分大小写?
  • 这取决于数据库的字符集和校对规则。在默认情况下,MySQL的查询是不区分大小写的,但可以通过设置校对规则来改变这一行为。
  1. LIKE和REGEXP操作有什么区别?
  • LIKE主要用于简单的模式匹配,而REGEXP用于更复杂的正则表达式匹配。
  1. 如何在mysql中运行批处理模式?
  • MySQL本身并不直接支持批处理模式,但你可以通过编写脚本或使用命令行工具来批量执行SQL语句。
  1. MyISAM和InnoDB的区别是什么?
  • 图片InnoDB支持事务, MyISAM不支持.
  • InnoDB支持行级锁, MyISAM支持表级锁.
  • 图片InnoDB支持多版本并发控制(MVVC), MyISAM不支持.
  • InnoDB支持外键, MyISAM不支持.
  • 图片MyISAM支持全文索引, InnoDB部分版本不支持(但可以使用Sphinx插件)
  1. 如何优化DISTINCT?
  • 优化DISTINCT的方法包括确保查询中使用的列都有索引、减少查询中涉及的列数、避免在DISTINCT查询中使用子查询等。
  1. MySQL数据库cpu飙升到100%的话怎么处理?
  • 当CPU使用率飙升至100%时,我们首先需要利用操作系统的top命令来快速识别是否由mysqld进程引发的高占用情况。
  • 如果mysqld并非罪魁祸首,那么我们需进一步查找其他占用资源较高的进程,并采取相应的处理措施。
  • 如果是 mysqld 造成的, show processlist,看看里面跑的 session 情况,是不是有消耗资源的 sql 在运行。找出消耗高的 sql,看看执行计划是否准确,index 是否缺失,或者实在是数据量太大造成。
  • 一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降), 等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升, 这种情况就需要跟应用一起来分析为何连接数会激增, 再做出相应的调整,比如说限制连接数等。
  1. MYSQL主从复制解决了哪些问题?
  • 主从复制的作用是:主数据库出现问题,可以切换到从数据库。可以进行数据库层面的读写分离。可以在从数据库上进行日常备份。
  • 数据分布:随意开始或停止复制,并在不同地理位置分布数据备份
  • 负载均衡:降低单个服务器的压力
  • 高可用和故障切换:帮助应用程序避免单点失败
  • 升级测试:可以用更高版本的MySQL作为从库
  1. MySQL的索引是什么,它有什么作用?如何查看?
  • 索引是一种数据结构,它可以帮助数据库系统快速检索数据,而无需扫描整个表。通过索引,数据库可以快速定位到表中的特定记录,从而提高查询速度。可以使用SHOW INDEX FROM 表名;命令来查看表的索引信息。
  1. 什么是死锁?怎么解决?
    死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。

常见的解决死锁的方法:

  • 如果不同程序会并发存取多个表, 尽量约定以相同的顺序访问表,可以大大降低死锁机会。
  • 同一个事务,尽可能做到一次锁定所需的所有资源,减少死锁产生概率;
  • 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率;
  1. 如何优化MySQL的查询性能?
  • 优化MySQL查询性能的方法有很多,包括:使用合适的索引、避免全表扫描、优化查询语句、减少连接操作、使用缓存等。
  1. 什么是SQL注入,如何防止?
  • SQL注入是一种攻击手段,攻击者通过在SQL查询语句中插入恶意代码来篡改原始语句的结构和意图。为了防止SQL注入,可以使用预编译语句(Prepared Statements)或参数化查询,避免在代码中直接拼接SQL语句。

这篇关于Mysql面试夺命18问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992957

相关文章

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.