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语句。

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

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

相关文章

详解 JuiceFS sync 新功能,选择性同步增强与多场景性能优化

JuiceFS sync 是一个强大的数据同步工具,支持在多种存储系统之间进行并发同步或迁移数据,包括对象存储、JuiceFS、NFS、HDFS、本地文件系统等。此外,该工具还提供了增量同步、模式匹配(类似 Rsync)、分布式同步等高级功…

每日一题:最大加号标志

在一个 n x n 的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i] [xi, yi]表示 grid[xi][yi] 0 返回 grid 中包含 1 的最大的 轴对齐 加号标志的阶数 。如果未找到加号标志,则返回 0 。 一个 k 阶由 1 组…

数字化应用标杆 | 又两家成套厂效率翻倍,利用率高达93%以上!

利驰 联能 & 利驰 俊郎 近日,利驰数字科技(苏州)有限公司(简称利驰软件)成功与俊郎电气有限公司(简称俊郎电气)、浙江联能电气有限公司(简称联能电气)成功确立了数字…

Google在我的网站显示不同的SEO元标题/描述

Rank Math使您可以比以往更轻松地为您的博客文章、页面和其他自定义帖子类型编写完美的SEO元标题和描述。但正如您可能已经注意到的那样,谷歌(以及其他搜索引擎)经常不简单地选择使用您设置的元描述,并且这种情况正变得越来越普遍…

深度学习面试问题 | 降维

本文给大家带来的百面算法工程师是深度学习降维面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习面试问题,并提供参考的回答及其理论基础&#…

Capture One 23 Enterprise for Mac/win:专业摄影师的得力助手

在数字图像处理的世界中,Capture One 23 Enterprise无疑是一款引领潮流的专业软件。无论你是专业摄影师,还是摄影爱好者,它都能为你提供全面、高效的图片编辑和管理解决方案。 Capture One 23 Enterprise以其强大的图像编辑功能而著称。它提…

【微积分】三角函数求导积分公式的巧妙记忆

三角函数积分求导公式的巧妙记忆 图像的整体记忆: 上面是sinx cosx 下面也是s开头,secx,cscx 中间是tanx cotx 解释说明: 1️⃣ 对角线互为倒数,即sinx对角线是cscx,这样我们可以更好记住这个六边形图像。…

实战| 手把手教你实现俯卧撑实时计数:OpenCV+MediaPipe

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

【Web】HNCTF 2024 题解(部分)

目录 Please_RCE_Me ezFlask GoJava ez_tp GPTS Please_RCE_Me <?php if($_GET[moran] flag){highlight_file(__FILE__);if(isset($_POST[task])&&isset($_POST[flag])){$str1 $_POST[task];$str2 $_POST[flag];if(preg_match(/system|eval|assert|call|…

7.学习STL中的string类:版本、组件、构造、操作及应用

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的容量操作 reserve 3. string类对象…

用友GRP-U8 userInfoWeb SQL注入致RCE漏洞复现 (XVE-2024-10539)

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 userInfoWeb接口处存在SQL注入漏洞,未授权的…

ue引擎游戏开发笔记(39)——npc的ai设定:追踪玩家以及瞄准

1.需求分析&#xff1a; 实现对npc的击杀和死亡反馈后&#xff0c;下一步需要赋予npc基本的ai&#xff0c;首先就是敌人要能够追踪或者说跟随玩家&#xff0c;这才能为后续npc开枪&#xff0c;对射做好准备&#xff0c;首先实现追踪玩家。 2.操作实现&#xff1a; 1.思路&…

VMware Workstation Pro 和 Fusion Pro 针对个人用户使用免费了

今早看到 VMware by Broadcom 官方博客 VMware Desktop Hypervisor Pro Apps Now Available for Personal Use - VMware Cloud Foundation (VCF) Blog 以及 Learn more about VMware Desktop Hypervisor Products Subscription Model 总结如下&#xff1a; 免费 Player 版本将…

通过C++和libcurl下载网易云音乐音频文件的5个简单步骤

概述 在网络编程中&#xff0c;使用C和libcurl库下载文件是一项常见的任务。网易云音乐作为中国领先的在线音乐服务平台之一&#xff0c;以其丰富的音乐资源、优质的音质和智能推荐系统而广受欢迎。由于其平台提供了大量的正版音乐资源&#xff0c;用户在下载音频文件时可能会…

在浏览器执行js脚本的两种方式

fetch请求get 在浏览器执行http请求,可以使用fetch函数; fetch(“url”).then(response => response.text()) .then(data => console.log(JSON.parse(data)[‘status’])) .catch(error => console.error(error)) 直接返回json数据: fetch(“url”).then(response…

Git系列:git add 被忽视的操作技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

GPT4o速测:约0.5秒延迟的多模态能力

文章目录 1. 测评2. IntroReference 没有剪辑&#xff0c;约0.5秒延迟的多模态能力。 1. 测评 推理速度异常快&#xff0c;比之前快了大概两三倍&#xff0c;对产品端来说是个很好的事情&#xff0c;想用gpt4级别性能终于可以少讨论几句时延影响用户体验了模型指令遵从能力变强…

数据中心逆变电源的功率容量计算方法

随着信息技术的快速发展&#xff0c;数据中心在现代社会中的地位日益凸显&#xff0c;各种企业和机构对数据中心的依赖程度也越来越高。而电源作为数据中心的核心基础设施&#xff0c;其可靠性和高效性直接影响着数据中心的稳定运行。因此&#xff0c;如何设计一款性能优越、可…

业务上云--从Container+BuildKitd打镜像到在Kubernetes上部署LNMP

一、背景 在基于kubeasz部署kubernetes高可用集群-CSDN博客文章部署的kubernetes集群上部署LNMP 1.1、Kubernetes环境 1.2、Harbor环境 【docker基础】使用Harbor搭建私有仓库-docker-compose使用示例--第二周作业_harbor docker-compose-CSDN博客 Harbor环境升级&#xff…

二.PVE创建 Ubuntu CT

二.PVE创建 Ubuntu CT 浏览器地址栏输入访问pve系统的网址,利用web端进行管理。注意进入pve系统时默认显示的有访问地址。本步骤的web访问地址为:https://192.168.1.102:8006。 出现该页面,选择继续前往。 进入管理页面后,输入PVE系统的用户名和密码,登录该系统。 登…