数据库面经2

您所在的位置:网站首页 surfacepen第五代和第六代区别 数据库面经2

数据库面经2

2023-05-18 00:38| 来源: 网络整理| 查看: 265

5、数据库范式了解吗?在你的项目中怎么运用的?会出现什么问题?

第一范式

第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

举例说明:

项目中用到第三范式就可以了

第一范式:每一列数据都具有原子性,就是列的属性不能再分

第二范式:在第一范式的基础上,非主属性必须完全依赖主属性

第三范式,在第二范式基础上,任何非主属性都不依赖其他非主属性(在第二范式上消除了传递依赖)

6、MySQL 执行一条查询语句的内部执行过程?

客户端先通过连接器连接到 MySQL 服务器;

连接器权限验证通过之后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有缓存则进入分析器;

分析器会对查询语句进行语法分析和词法分析,判断 SQL 语法是否正确,如果查询语法错误会直接返回给客户端错误信息,如果语法正确则进入优化器;

优化器是对查询语句进行优化处理,例如一个表里面有多个索引,优化器会判别哪个索引性能更好;

优化器执行完就进入执行器,执行器则开始执行语句进行查询比对了,直到查询到满足条件的所有数据,然后进行返回。

7、项用中使用到外键了吗?外键作用?使用外键要注意些什么问题?

外键的作用:外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

优点:能够由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器宕机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。

缺点:性能差,当每次插入数据时,当存在外键约束的时候,每次都要扫描此记录是否合格,一般还不止一个字段有外键,这样扫描数量是成级数的增长。

注意点:

父表和子表都必须使用相同的存储引擎,而且禁止使用临时表

数据库存储引擎只能为InnoDB(MySQL)

外键列与参照列的数据类型必须相同

8、Redis数据库和MySQL数据库的区别

Redis数据库和MySQL数据库的区别就是,Redis在拓展性方面有更好的表现,而MySQL是批量更新方面更有优势。选择使用什么样的数据库,取决于具体的业务。另外值得一提的是,由于Redis是远程内存型数据库,虽然也有持久化的作用,但是更多的时候,只是把它看成一个内存存储,在数据安全性和稳定性方面,是不如MySQL的。

9、锁机制与InnoDB锁算法

InnoDB存储引擎的锁的算法有三种:

Record lock:单个行记录上的锁

Gap lock:间隙锁,锁定一个范围,不包括记录本身

Next-key lock:record+gap 锁定一个范围,包含记录本身

相关知识点:

innodb对于行的查询使用next-key lock

Next-locking keying为了解决Phantom Problem幻读问题

当查询的索引含有唯一属性时,将next-key lock降级为record key

Gap锁设计的⽬的是为了阻⽌多个事务将记录插⼊到同一范围内,⽽这会导致幻读问题的产生

有两种方式显式关闭gap锁:(除了外键约束和唯一性检查外,其余情况仅使用record lock) A. 将事务隔离级别设置为RC B. 将参数innodb_locks_unsafe_for_binlog设置为1

10、单例模式

确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

单例模式有三个特点:

这个类是能是一个实例;

必须自己创建这个实例;

必须自己向整个系统提供这个实例。

优点:

单例模式提供了严格的对唯一实例的创建和访问

单例模式的实现可以节省系统资源

缺点:

如果某个实例负责多重职责但又必须实例唯一,那单例类的职责过多,这违背了单一职责原则;

多线程下需要考虑线程安全机制;

单例模式没有抽象层,不方便扩展。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3