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

数据库基础原理

宏观

数据库的实现原理分为四个部分:

网络通信

网络协议

硬盘存储

内存分配

微观

硬盘存储

数据库是持久化的,而持久化如何实现的,我们不难想到磁盘可以持久化存储,所以数据库所有持久化的数据都是以文件形式存在磁盘中的,包括索引文件,所以我认为万物皆文件。这里我们需要注意的操作系统的基础知识是,只要存在磁盘中的数据都是以文件形式存储的。包括虚拟内存,试将不用的进程挂起,然后将进程数据信息使用文件的形式存储在磁盘中的一个特定区域中。

网络通信

在数据库中有一个关键的东西,那就是socket。数据库是通过它来与端口所交互的。

那socket又是如何与端口进行交互的呢?

我们第一印象会想到:只要端口来了数据就发送给socket吧。这样看似可以,但是如果真这样做的话,我们还要更麻烦的去识别端口来消息然后让socket被动去接收,我们不如直接让socket主动去接收,过一段时间socket就去询问一下端口是否来数据,从而获得新数据。

网络协议

如今的网络通信,如果是建立连接的话,普遍使用TCP协议,这样可以保证信息的可靠传输。通过三次握手建立连接,四次挥手释放连接。

一个socket只能对应一个连接,所以许多个客户端连接会产生许多个socket。

每次建立一个新连接时,都会对账号和密码进行比对,比对完之后就会生成一个身份标记,同时存放在端口和socket中,之后每一次连接只需要比对身份标记就可以,这样会大大提高性能,不需要每次都去进行用户名和密码的比对。同时保证了性能和安全性。

注意:两者通信建立连接之后一定要记得断开连接。

内存分配

socket拿到数据后后进行字符集编码 --》校验身份 --》解析sql语句。

解析时会将表拷贝进内存,文件中存入的是各个列的数组信息,并且一列一列的查询,需要的返回,不是就继续下一列。(不建立索引的情况)

为了加快速度就可以建立索引,一个表可以建很多索引文件。

先通过索引文件查找到地址,然后再去表文件中根据地址查找。

http://www.lryc.cn/news/328215.html

相关文章:

  • Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改某个单元格的值,多字段排序
  • 工作总结5
  • 速通汇编(二)汇编mov、addsub指令
  • 软考 - 系统架构设计师 - 构件组装技术
  • 2010年之前电脑ubuntu安装nvidia驱动黑屏处理
  • 类与对象中C++
  • k8s 集群重启报错:The connection to the server 192.168.92.26:6443 was refused
  • 国内好用的chatGPT和AI绘图工具
  • 蚂蚁庄园3.31今日答案春季美食“雷竹笋”之所以得名是因为出笋与打雷有关吗?
  • 零基础入门转录组数据分析——绘制差异火山图
  • C++进阶,手把手带你学继承
  • Java自带的线程池及调用、ThreadPoolExecutor类(线程池的7大参数)、任务队列及底层原理
  • ThreadPool-线程池使用及原理
  • 高性能服务系列【十一】主题匹配
  • Vue 2 组件发布到 npm 的常见问题解决
  • p2p原理
  • 从供方协议管理到外部供方管理
  • 微服务demo(四)nacosfeigngateway
  • 2D与动画
  • Maven:构建现代化软件项目的强大工具
  • 脏牛提权(靶机复现)
  • 用html写一个贪吃蛇游戏
  • Topaz Gigapixel AI for Mac 图像放大软件
  • uniapp先显示提示消息再返回上一页
  • 【爬虫开发】爬虫从0到1全知识md笔记第2篇:requests模块,知识点:【附代码文档】
  • 【算法刷题day11】Leetcode: 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
  • 推荐算法策略需求-rank model优化
  • hadoop 常用命令
  • pdf在浏览器上无法正常加载的问题
  • 实时语音识别(Python+HTML实战)