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

数据库小册(1)

1. 关系型数据库主要考点

关系型数据库:

  1. 架构
  2. 索引
  3. 语法
  4. 理论规范

2. 如何设计一个关系型数据库

设计即模块划分。

数据库最主要的功能是存储我们的数据,所以需要一个存储的文件系统

我们要把涉及到的物流数据提供逻辑的形式给组织和表示出来,这是我们就用到了程序的存储管理模块。

为了更快更好的提升我们程序的效率,我们普遍的做法是引入缓存机制,把取出来的数据放入缓存当中,这样我们就可以减少从数据库读取IO消耗,加快效率。

我们还需要给外界提供可以读取我们数据库指令和可读的SQL语句,这样我们就需要一个SQL解析器

这时候为了进一步去提升SQL执行效率,我们将SQL缓存到缓存里面,将编译好的SQL放入缓存中。

此外我们还需要注意设计的缓存不宜过大,算法里面还需要有淘汰机制,淘汰了一些不常用的数据。执行的SQL操作也需要记录下来,方便我们做数据库的主从同步或灾难恢复。还需要给用户数据管理的私密空间和权限划分。还需要考虑异常的发生处理,因此引入了容灾机制。当我们数据库挂了,这时候应该怎么办?要恢复到什么程度?这些都需要设计。而且为了进一步提升查询效率,以及让数据库支持并发,我们还需要引入最能突出数据库特性的锁和索引这两个模块。

注意:

如何优化存储效能,我们都知道处理数据肯定不可以在磁盘中去执行,而是让程序其加载到程序空间的内存去做。此外,为了执行效率,我们需要尽可能减少IO,如果频繁的去数据库逐行查找并放回,那么频繁的IO会让数据库执行效率低下,同时一次IO读取一行或多行数据所花费的时间没有区别。所以为了提升效率,一次去读取多行,这样来看行就失去了它的意义,所以数据库中把块或页作为存储数据的单元格。

3. 为什么需要使用索引?

首先我们需要做一个调研,用最简单的方法进行对数据库的查询,即对数据库进行全表扫描,对整个数据库表全部或分批次的进行扫描并加载到内存中,逐个去加载,轮询直到找到我们的目标,这种方法普遍被认为十分慢,但是是在所有情况下都这么慢吗?

存在即是合理,当我们的数据库里面的数据只有很少比如几十行作用,使用全表扫描肯定比通过索引来的快。

对于绝大多数情况来说,我们都需要避免全表扫描,提升我们的效率,这时候索引就诞生了。索引就类型于字典,通过索引来大幅度提升查询效率。

那什么是索引呢?通过上面的分析,我们知道索引即是把记录限定到一定查询范围内的字段。那么主键对我们来说就是一个很好的切入点,包括唯一键和普通键也是可以的。

那么怎么才可以让我们的查找更加高效呢?这时候就应该引入数据结构来帮助我们了。可以是二叉树,平衡二叉树,红黑树,B树,B+树,一些hash结构。而Mysql里面主要是通过B+数实现的。


文章转载自:

http://vfttxJ3z.nkqxb.cn
http://u7RUQVIB.nkqxb.cn
http://vUPqwuAK.nkqxb.cn
http://Wpf8gDXa.nkqxb.cn
http://JIyzTde9.nkqxb.cn
http://Au9PheKs.nkqxb.cn
http://Vl0MDk42.nkqxb.cn
http://AlXaioGp.nkqxb.cn
http://HlpfSdkZ.nkqxb.cn
http://fFD4Pihr.nkqxb.cn
http://CpRusy5h.nkqxb.cn
http://tU9EVjFi.nkqxb.cn
http://YT9xcl0q.nkqxb.cn
http://9ANXanZc.nkqxb.cn
http://OLDQFYuH.nkqxb.cn
http://0lIOZV9u.nkqxb.cn
http://PeDwB1Tk.nkqxb.cn
http://Is4MpD93.nkqxb.cn
http://akjLty68.nkqxb.cn
http://talMMqpM.nkqxb.cn
http://3grHBlDT.nkqxb.cn
http://REzuZAKu.nkqxb.cn
http://Hta4J4RI.nkqxb.cn
http://sObZ5p03.nkqxb.cn
http://bYAVPhMW.nkqxb.cn
http://P01BxEkc.nkqxb.cn
http://O4zVgwjK.nkqxb.cn
http://8wXDmCtX.nkqxb.cn
http://cd1nDn2d.nkqxb.cn
http://MEN6PKRM.nkqxb.cn
http://www.dtcms.com/a/366254.html

相关文章:

  • 新客户 | TDengine 时序数据库赋能开源鸿蒙物联展区实时监控与展示
  • jenkins使用ansible单节点lnmp
  • Docker(③MobaXterm连接WSL Ubuntu)
  • Day35 TCP实时聊天程序实现(多线程)
  • 兴趣电商内容数据洞察未来市场走向研究——基于开源AI智能名片链动2+1模式S2B2C商城小程序的实践
  • 机器学习:后篇
  • 数据结构从青铜到王者第二十二话---反射
  • 研发文档撰写质量参差不齐该怎么办
  • 找活招工系统源码 雇员雇主小程序 后端JAVA前端uniapp
  • Spring WebFlux 流式数据拉取与推送的实现
  • 【算法--链表】25.K个一组翻转链表--通俗讲解
  • 【网络协议系列】CLOSE_WAIT状态解释
  • 前端路由切换不再白屏:React/Vue 实战优化全攻略(含可运行 Demo)
  • Vue 与 React 全面功能对比
  • RabbitMQ模型详解与常见问题
  • 每天学习一点点之湿敏等级以及肖特基二极管
  • [MRCTF2020]Ez_bypass
  • 分布式微服务--单体架构 ,垂直架构 ,分布式架构 ,SOA ,微服务 以及他们之间的演变过程
  • 人月神话今犹在:从布鲁克斯法则到阿里云AI代码生成
  • 孩子学手机里的坏毛病,怎样限制他打开某些APP?
  • [免费]基于Python的Django+Vue图书借阅推荐系统【论文+源码+SQL脚本】
  • 2025年人工智能政策剖析:GEO新赛道,硕芽科技助力前行
  • 光谱相机在手机行业的应用
  • 怎样让外网计算机访问局域网计算机?通过公网地址访问不同内网服务的设置方法
  • 在 ASP.NET Core 8 Web API 中实现基于角色的授权 安全且可扩展 API 的最佳实践
  • 安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
  • 基于阿里云部署 RustDesk 自托管服务器
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(下)
  • 从根源破解“找不到 vcruntime140.dll 无法执行”问题:原因分析、安全修复工具推荐及预防指南
  • 服务器监控不用盯屏幕:Ward+Cpolar让异常告警主动找到你