欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > MySql面试宝典【刷题系列】

MySql面试宝典【刷题系列】

2025/2/22 17:17:21 来源:https://blog.csdn.net/mss359681091/article/details/145787795  浏览:    关键词:MySql面试宝典【刷题系列】

文章目录

      • 一、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)等

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

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

定义

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

作用

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

个数

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词