欢迎您访问新华电脑学校官方网站!官网

您的位置:首页>新闻资讯>就业新闻

面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?

发布时间:2020-08-27  作者:石家庄新华电脑学校 浏览量:157

一、事务

 

1.什么是事务

 

MySQL事务是一组sql语句或一个独立运行的工作单元。这个工作单元要么全部执行,要么全部不执行。

 

2. 事务的四大特性

 

原子性:一个事务不可再分割,事务中的所有操作,要么全部完成,要么全部不完成。

 

一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态。也就是说,在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

 

隔离性:一个事务所做的修改在最终提交之前,对其它事务是不可见的。也就是说一个事务的执行不会受到其它事务的干扰。

 

持久性:一个事务一旦提交以后,对数据的修改就会永久的保存到数据库中,即便系统故障也不会丢失。

 

2.事务的并发问题

 

① 事务并发问题什么时候发生?

 

当多个事务同时操作同一个数据库的相同数据时,就会发生并发问题。

 

② 事务的并发问题有哪些?

 

脏读:对于两个事务T1、T2, T1 读取了已经被T2 更新但还没有被提交的数据。如果事务T2进行了回滚, T1读取到的数据就是临时且无效的。

 

不可重复读:对于两个事务T1、T2, T1 读取了一个数据, 然后 T2 更新了该数据。如果T1再次读取同一个数据, 值就不相同了。

 

幻读:对于两个事务T1、T2, T1 从一个表中读取了一个数据, 然后T2 在该表中插入了一些新的行。如果T1 再次读取同一个表, 就会多出几行。

 

二、索引

 

1. 什么是索引

 

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以提高数据库中特定数据的查询速度

 

2. 索引的优缺点

 

优点

 

① 使用索引可以大大加快数据的查询速度;② 通过创建唯一索引,可以保证数据库表中每一行数据的唯一性;③ 在使用分组和排序子句进行数据查询时,使用索引可以减少在查询中分组和排序的时间。

 

缺点

 

① 创建索引和维护索引需要时间,随着数据量的增加所需要时间也会增加;② 当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度;③ 索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引还要占定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸

 

2. 索引的设计原则

 

① 索引并非越多越好,一个表中如有大量的索引,不仅占用磁盘空间,而且会影响 INSERT、 DELETE、UPDATES等语句的性能,因为当表中的数据更改的同时索引也会进行调整和更新。

 

② 避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

 

③ 数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。

 

④ 在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。比如在学生表的“性別”字段上只有“男”与“女”两个不同值,因此就无须建立索引。如果建立索引不但不会提高查询效率,反而会严重降低数据更新速度。

 

⑤ 当唯一性是某种数据本身的特征时,指定唯一索引。使用唯一索引副需能确保定义的列的数据完整性,以提高查询速度。

 

⑥ 在频繁进行排序或分组(即进行group by或 order by操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。

 

三、数据库设计三大范式

 

1. 第一范式:确保每列保持原子性

 

2. 第二范式:确保表中的每列都和主键相关

 

3. 第三范式:确保每列都和主键列直接相关,而不是间接相关

 

四、MySQL的主从复制

 

1. 概念

 

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。

 

2. 原理

 

在这里插入图片描述

 

从库生成两个线程,一个I/O线程,一个SQL线程。

 

I/O线程 去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

 

主库会生成一个 log dump 线程,用来给从库 I/O线程传binlog。

 

SQL线程 会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。

 

3. 主从复制用途

 

① 读写分离,在开发工作中,有时候会遇见某个sql

 

② 数据实时备份,当系统中某个节点发生故障时,可以方便的故障切换。

 

五、MySQL中的锁

 

1. 为什么要加锁

 

数据库的锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。在数据库中加锁是保证在高并发的情况下,访问数据库的时候,数据不会出现问题。

 

2. 锁的分类

 

按操作分:① 读锁(共享锁);② 写锁(排它锁)。

 

按粒度分:① 表锁;② 行锁;③ 页锁。

 

六、如何做 MySQL的性能优化

 

① 当只需要一条数据的时候,使用 limit 1

 

② 尽量避免使用 select * ,在查询的时候列出需要查询的字段。

 

③ 使用 join 代替子查询。

 

④ 减少使用 or,使用 in 或者 union(union all) 代替。

 

⑤ 为搜索字段创建索引。但是不要过度索引,索引越多,占用空间越大,反而性能变慢。

 

⑥ 避免进行类型转换,不然会导致索引失效。

 

⑦ 对查询语句使用explain 。 使用explain ,可以帮助了解MySQL是如何处理sql语句的, 可以查看到sql的执行计划,这样就能更好的去了解的sql语句的不足,然后优化语句。

 

⑧ 垂直分割,将常用和有关系的字段放在相同的表中,把一张表的数据分成几张表 这样可以降低表的复杂度和字段的数目,从而达到优化的目的。

 

来源:CSDN网


常见问题

热招专业

在线报名


电话:400-900-8780

地址:河北省石家庄市桥西区南二环西路199号,南二环与红旗大街交叉口西行300米路北

冀ICP备11012044号 | 版权所有:石家庄新华电脑学校

工信部备案管理系统网址:https://beian.miit.gov.cn/

  • 官方快手账号

  • 官方视频号

  • 官方公众号

网站声明:任何企业或者个人以任何形式复制或传递本网站所载述的域名商标、文字、视像及声音内容、图形及图像应当注明来源于本网站