当前位置: 首页 > news >正文

数据库常见问题(持续更新)

数据库常见问题(持续更新)

1、数据库范式?

  • 1NF:不可分割
  • 2NF:没有非主属性对候选码存在部分依赖
  • 3NF:没有非主属性传递依赖候选码
  • BCNF:消除了主属性对对候选码的传递依赖或部分依赖

2、InnoDB事务的实现?

InnoDB 为Mysql数据库的默认引擎,InnoDB通过buffer poollog bufferredo logundo log来实现事务
以一个update语句为例:

  1. InnoDB在收到一个update语句后,会先根据条件找到数据所在页,并将该页缓存在Buffer Pool中;
  2. 执行update语句,修改Buffer Pool中的数据,也就是内存中的数据;
  3. 针对update语句生成一个redo log对象,并存入log buffer中;
  4. 针对update语句生成undo log日志,用于实现事务回滚;
  5. 如果事务提交,那么会把redo log对象进行持久化,会后将buffer pool中所修改的数据页持久化到磁盘中;
  6. 如果事务回滚,利用undo log进行回滚;

3、分页操作如何实现?

MySQL中使用limit关键字,举例:

select * from table_name where 条件 limit 当前页码*页面容量-1,页面容量

limit 初始位置,记录数

where 字段名 like 表达式

  • %:0或多个任意字符
  • _:任意单个字符
  • []:其中的任意一个值

4、B树和B+树?

B树的特点:

  1. 节点排序
  2. 一个节点可以存多个元素,这多个元素也是排好序的

B+树的特点:

  1. 拥有B树的所有特点
  2. 叶子之间存在指针
  3. 非叶子节点上的元素在叶子节点上冗余,且叶子节点排好序的

问题:InnoDB存储引擎采用B+树为索引的原因?

  • 相比于红黑树来说,B+树层级更少,搜索效率更高。
  • 相比于B树来说,B树无论是叶子结点还是非叶子结点都会保存数据,这样会导致一页存储的键值减少,存储大量数据时只能增加树的高度,导致性能降低。
http://www.lryc.cn/news/395141.html

相关文章:

  • 定个小目标之刷LeetCode热题(40)
  • Linux--线程(概念篇)
  • Mojo: 轻量级Perl框架的魔力
  • Python 游戏服务器架构优化
  • 13 学习总结:指针 · 其一
  • golang 项目打包部署环境变量设置
  • 【Linux进程】进程优先级 Linux 2.6内核进程的调度
  • Linux中的粘滞位及mysql日期函数
  • BP神经网络的实践经验
  • PCL 点云FPFH特征描述子
  • 基于golang的文章信息抓取
  • 【手撕数据结构】卸甲时/空间复杂度
  • 消防认证-防火窗
  • C++进阶-二叉树进阶(二叉搜索树)
  • 【Unity小知识】UnityEngine.UI程序集丢失的问题
  • CentOS 离线安装部署 MySQL 8详细教程
  • 云计算【第一阶段(28)】DNS域名解析服务
  • pygame 音乐粒子特效
  • Leetcode 295.数据流的中位数
  • A59 STM32_HAL库函数 之 TIM扩展驱动 -- A -- 所有函数的介绍及使用
  • 【Unity】UGUI的基本介绍
  • MySQL 9.0新特性:向量存储
  • ruoyi实用性改造--(四)选择数据源及非标准使用数据库
  • HMI 的 UI 风格创造奇迹
  • 如何安全隐藏IP地址,防止网络攻击?
  • Windows10/11家庭版开启Hyper-V虚拟机功能详解
  • 202487读书笔记|《我有个拥抱,你要不要》——生活从来如此,你的态度赋予它意义
  • 使用tcpdump抓取本本机的所有icmp包
  • Nginx:负载均衡小专题
  • 新增多种图表类型,新增插件管理模块,DataEase开源数据可视化分析工具v2.8.0发布