zoukankan      html  css  js  c++  java
  • 数据库面试题(更新中...)

    1.数据库中的事务理解

    (1)事务:可以理解为一个操作序列(类似于程序代码序列),但是该操作序列需要满足四大特性

    (2)四大特性

    • 原子性:事务作为一个整体而执行,内部所有操作要么不执行,要么全部执行。中途出现错误,则回滚
    • 一致性:事务应确保数据库状态从一个一致性变为另一个一致性状态。一致性表示:数据库中数据应满足完整性约束
    • 隔离性:多个事务并发执行时,事务之间不会相互影响
    • 持久性:事务一旦提交,对数据库修改结果应永久保存在数据库中

    (3)并发下事务产生的问题

    • 脏读:事务A读到了事务B还没有提交的数据
    • 不可重复读:在一个事务里面对某种数据读取两次,但读出的数据不一致
    • 幻读:在一个事务的操作里面发现了未被操作的数据(事务发生了修改、删除)

      注:不可重复读旨在数据修改,幻读旨在新增或者删除

    (4)事务隔离级别--解决上述问题

      事务隔离级别就是为了解决上面几种问题而诞生的,事务隔离级别越高,并发下产生问题越少,付出能耗越大,因此必须权衡并发和性能。

    • 读未提交:能够读到那些没有被提交的数据,这种方式无法解决脏读,不可重复读,幻读等
    • 读已提交:可读到那些已经提交的数据,防止脏读,但不能解决不可重复读和幻读
    • 重复读取:数据读出后加锁,明确数据读出来后是最新的。不能解决幻读
    • 串行化:挨个运行一个事务所有子事务后运行另外一个事务的子事务。可解决所有

    2.数据库索引

      索引的结构一般有平衡树(B树,B+树),Hash表等

    索引缺点:

    创建动态维护索引需要时间

    索引需要占用物理空间

    (1)聚焦索引

    • 如果给表加了主键,整个表变成了一个索引(聚焦索引)。主键的作用就是把表的数据格式转换为索引(平衡树)的格式放置。
    • 优势:数据有序存放;查找时很快,分叉越多,查找越快。
    • 劣势:插入删除需要改变索引结构(B+树结构),效率低

    (2)非聚焦索引

    • 通过非聚焦索引可以查到记录对应的主键值,再使用主键值通过聚焦索引查找到需要的数据;相当于索引页里存放索引,指向专门数据页的数

    3.数据库中的主键和外键

    (1)主键:数据库中一条数据多个属性当中,如果某一个属性组能唯一标识一条记录,该属性组可成为一个主键;主键只能有一个

      外键:表的外键是另一个表的主键,外键可以重复,可为空;主要用于与另一张表的关联;一个表可以有多个外键

    4.关系型和非关系型数据库

    (1)关系型数据库:采用了关系模型来组织数据的数据库,关系模型指的就是二维表格模型

    • 优点:
      • 容易理解
      • 使用方便:可使用通用的SQL语言操作
      • 易于维护:丰富的完整性
    • 缺点:
      • 并发高时IO操作时瓶颈
      • 查找时比较慢

    (2)非关系型数据库

    • 非关系型数据库以键值对存储,

    5.数据库有哪些锁

    (1)共享锁:多个事务可封锁一个共享页。锁共有的,但是同时只允许一个事务操作

    (2)排他锁:仅允许一个事务封锁此页。其他来了加自己的锁

    (3)乐观锁:乐观锁认为一个用户读数据的时候,别人不会去写自己所读的数据;

    (4)悲观锁:悲观锁就刚好相反,觉得自己读数据库的时候,别人可能刚好在写自己刚读的数据。悲观锁在自己读写数据时不允许别的事务操作,结束后才允许别的事务操作

  • 相关阅读:
    【知乎精选】一个产品经理的成长(转)
    互联网性能与容量评估的方法论和典型案例
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    基于Windows运行库的UWP—C#高级编程(第10版)学习笔记3
    .Net Core的重要性(价值)—C#高级编程(第10版)学习笔记2
    本书主要内容—C#高级编程(第10版)学习笔记1
    C#—.net开发首选编程语言—摘自《C#高级编程第10版》
    表格标签
    伪类
    ps小知识点备忘录
  • 原文地址:https://www.cnblogs.com/jainszhang/p/10650754.html
Copyright © 2011-2022 走看看