数据库面经2 |
您所在的位置:网站首页 › surfacepen第五代和第六代区别 › 数据库面经2 |
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 |