【1年Java面试资料整理】关系型数据库

一、事务特性ACID

  • 原子性:atomic
  • 一致性:consistence
  • 隔离性:isolation
  • 持久性:durability

二、数据库隔离级别

  • 脏读:事务B读取事务A未提交的数据
  • 不可重复读:事务B读取数据时,事务未结束,事务A修改了这个数据,事务B又读数据时,两次数据可能不一样
  • 幻读:事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般

三、Mysql引擎

  • MYISAM
    • 不支持外键、表锁
  • INNODB
    • 支持外键、行锁

四、B+索引和Hash索引

  • Hash索引(哈希算法)
    • 等值查询效率高,不能排序,不能范围查询
    • 如果不存在hash碰撞,非常快O(1),但是如果同一个hash值不值一个key时,根据这个位置继续找,常用的是扩展链表法,当前key位置放置链表
  • B+索引(BTREE【平衡多叉树】)B+树实现要去看看
    • 数据有序,范围查询(如like查询)
    • 时间复杂度等于树的高度,一般为3-5次IO
    • 最左匹配原则,也就是多列索引中,数据在B+树的哪个节点,只取决于最左边的列上的key

五、聚集索引和非聚集索引

  • 聚集索引:数据按索引顺序存储
  • 非聚集索引:存储指向真正数据行的指针

六、索引分类

  • 普通索引
  • 唯一索引
  • 主键索引
  • 全文索引
  • 组合索引
    • 遵循最左前缀原则:当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询

七、数据库三范式

  • 1NF:属性不可分
  • 2NF:非主键属性,完全依赖于主键属性
  • 3NF:非主键属性无传递依赖

八、数据库锁

  • 乐观锁
  • 悲观锁
  • 排他锁
  • 行锁
  • 表锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值