当前位置: 首页 > news >正文

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)等

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

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

定义

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

作用

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

个数

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

相关文章:

  • Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
  • 网络工程师 (49)UDP协议
  • 双非本中九硕电子信息CV,自学开发不知道选java还是c++
  • 从被动应答到主动预见:客户服务的未来式变革
  • C++ STL基础
  • 1287. 有序数组中出现次数超过25%的元素
  • JavaScript 中的数组详解
  • 量子计算的基本运算:Hadamard 门、CNOT 门、Pauli 门详解
  • 使用excel中的VBA合并多个excel文件
  • 【Java学习】多态
  • LeetCode 501.二叉搜索树中的众数
  • C++ 移动语义
  • 电商API安全防护:JWT令牌与XSS防御实战
  • Java EE初阶-计算机导论
  • 15增减字符串匹配(贪心)思路解析+源码
  • 分布式 IO 模块:造纸设备的降本增效利器
  • 算法专题(四):前缀和
  • 累加器(Accumulators)在Spark中的应用
  • 收到线上服务器出现cpu告警一般怎么排查?
  • pytorch基础
  • 做网站开始要注意什么/如何让百度搜索排名靠前
  • 做足球经理头像的网站/免费关键词挖掘工具
  • 政府网站信息内容建设不/淘宝推广公司
  • 保定哪个公司做网站好/网络软文案例
  • 镇江网站搭建/南昌seo快速排名
  • 哈尔滨建设网官方网站/网络营销swot分析