MySql面试宝典【刷题系列】

news/2025/2/22 15:15:45

文章目录

      • 一、Mysql 的存储引擎 myisam 和 innodb 的区别。
      • 二、MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
      • 三、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
      • 四、锁的优化策略
      • 五、索引的底层实现原理和优化
      • 六、 什么情况下设置了索引但无法使用
      • 七、实践中如何优化MySQL
      • 八、SQL注入漏洞产生的原因?如何防止?
      • 九、索引的目的是什么?
      • 十、索引对数据库系统的负面影响是什么?
      • 十一、为数据表建立索引的原则有哪些?
      • 十二、什么情况下不宜建立索引?
      • 十三、主键、外键和索引的区别?


在这里插入图片描述

一、Mysql 的存储引擎 myisam 和 innodb 的区别。

答:

  1. MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。

  2. innodb 是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。

二、MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

答:

  1. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
  2. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
  3. mysql库主从读写分离。
  4. 找规律分表,减少单表中的数据量提高查询速度。
  5. 添加缓存机制,比如 memcachedapc 等。
  6. 不经常改动的页面,生成静态页面。
  7. 书写高效率的 SQL。比如
SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE

三、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?

答:

  1. 确认服务器是否能支撑当前访问量。
  2. 优化数据库访问。
  3. 禁止外部访问链接(盗链), 比如图片盗链。
  4. 控制文件下载。
  5. 使用不同主机分流。
  6. 使用浏览统计软件,了解访问量,有针对性的进行优化。

四、锁的优化策略

答:

  1. 读写分离
  2. 分段加锁
  3. 减少锁持有的时间4
  4. 多个线程尽量以相同的顺序去获取资源

五、索引的底层实现原理和优化

答:B+ 树,经过优化的 B+

主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。

六、 什么情况下设置了索引但无法使用

答:

  1. “%” 开头的 LIKE 语句,模糊匹配
  2. OR 语句前后没有同时使用索引
  3. 数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型)

七、实践中如何优化MySQL

答:

  1. SQL语句及索引的优化
  2. 数据库表结构的优化
  3. 系统配置的优化
  4. 硬件的优化

八、SQL注入漏洞产生的原因?如何防止?

答:

  1. SQL注入产生的原因:程序开发过程中不注意规范书写 sql 语句和对特殊字符进行过滤,导致客户端可以通过全局变量 POSTGET 提交一些 sql 语句正常执行。

  2. 防止SQL注入的方式

    • 开启配置文件中的 magic_quotes_gpcmagic_quotes_runtime 设置
    • 执行 sql 语句时使用 addslashes 进行 sql 语句转换
    • Sql语句书写尽量不要省略双引号和单引号。
    • 过滤掉sql语句中的一些关键词:update、insert、delete、select、 *
    • 提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
    • Php 配置文件中设置 register_globalsoff ,关闭全局变量注册
    • 控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。

九、索引的目的是什么?

答:

  1. 快速访问数据表中的特定信息,提高检索速度
  2. 创建唯一性索引,保证数据库表中每一行数据的唯一性。
  3. 加速表和表之间的连接
  4. 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

十、索引对数据库系统的负面影响是什么?

答:
负面影响: 创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

十一、为数据表建立索引的原则有哪些?

答:

  1. 在最频繁使用的、用以缩小查询范围的字段上建立索引。
  2. 在频繁使用的、需要排序的字段上建立索引

十二、什么情况下不宜建立索引?

答:

  1. 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。
  2. 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等

十三、主键、外键和索引的区别?

答:主键、外键和索引的区别

定义

  • 主键–唯一标识一条记录,不能有重复的,不允许为空
  • 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值
  • 索引–该字段没有重复值,但可以有一个空值

作用

  • 主键–用来保证数据完整性
  • 外键–用来和其他表建立联系用的
  • 索引–是提高查询排序的速度

个数

  • 主键–主键只能有一个
  • 外键–一个表可以有多个外键
  • 索引–一个表可以有多个唯一索引

http://www.niftyadmin.cn/n/5862437.html

相关文章

代码随想录算法训练day59---图论系列4

代码随想录算法训练 —day59 文章目录 代码随想录算法训练前言一、110.字符串接龙二、105.有向图的完全可达性dfs版本1dfs版本2bfs版本 三、100. 岛屿的最大面积方法一方法二 总结 前言 今天是算法营的第59天,希望自己能够坚持下来! 今天继续图论part&…

工控自动化领域:数字量信号与模拟量信号的差异解析

在工控自动化的神秘世界里,信号如同传递指令和信息的使者,而数字量信号和模拟量信号则是其中的两大主角。它们各自有着独特的 “性格” 和 “使命”,在不同的场景中发挥着关键作用。下面,就让我们一起来深入了解一下它们的区别。 …

x安全服务 y安全体系 z网络安全模型 网络安全体系设计

这一年来,网络安全行业兴奋异常。各种会议、攻防大赛、黑客秀,马不停蹄。随着物联网大潮的到来,在这个到处都是安全漏洞的世界,似乎黑客才是安全行业的主宰。然而,我们看到的永远都是自己的世界,正如医生看…

关于css中bfc的理解

首先需要了解的是bfc的缩写是block formatting context 块级格式化上下文 那么块级格式化上下文意味着我们在bfc的区域内生成了一块独立于当前文本流的样式、它不受外界样式的影响、有着专属于自己的样式。 基于这样的定义我们可以避免一些样式冲突、在我们开发者面对复杂布局…

今天踩个大坑,jdk1.8版本对应可使用的gradle

这俩版本都是基于jdk1.8版本的as可以使用的gradle版本

直播美颜SDK的底层技术解析:图像处理与深度学习的结合

直播美颜SDK通过高效的图像处理技术和深度学习算法,使得用户在直播过程中可以获得更为自然、精致的美颜效果。本文将深入解析直播美颜SDK的底层技术,探讨图像处理与深度学习如何在这一领域实现完美结合,提升用户体验并推动行业创新。 一、直…

算法从0到100之【专题一】- 双指针第一练(数组划分、数组分块)

文章目录 【题目一】移动零题目要求算法原理(思路讲解 画图模拟演示)代码实现 【题目二】复写零题目要求算法原理(思路讲解 画图模拟演示)代码实现 【题目一】移动零 题目要求 给定一个数组 nums,编写一个函数将所…

代码随想录二刷|动态规划8

dp动态规划 动态规划五步曲 动态规划数组的含义 dp[i] 递推公式 动态规划数组的初始化 确定遍历顺序 手动模拟验证 动态规划遇到问题要打印dp数组,看和模拟结果哪里不一样 一 基础问题 斐波那契数 题干 斐波那契数 (通常用 F(n) 表示&#xf…