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

数据库底层原理

本文将介绍数据库在储存和通讯时的原理

数据库储存

首先,数据库的作用持久化存储数据,数据库的存储形式就是文件,每一张表就是一个文件,其他数据也是文件形式,比如索引文件。
比如像mysql数据库,其中的数据其实是一个个文件,储存在硬盘中,当其在运行时数据就会暂时存放在内存中,为了更快的查询。

并且数据库在设计时尽量保证每一行信息的长度都是一样的,这样设计在查询时速度是最快的.
这样虽然速度变快了,但是在不建索引的情况下执行sql语句需要遍历整个数据库,对内存的消耗很大。
因此为了更高效地查询数据库,数据库可以根据某一列的信息形成索引文件,或者结合多列形成组合索引。
索引文件中每一列形成一个排序的文件,里面会有数据列和地址。
索引文件小,而且时有序的,使用索引后速度就会提升很多,
索引文件存在时间也特别短,查询完就会销毁,增强了抗并发能力。

数据库通讯

数据库在和其他请求方在进行通讯时,由于需要网络请求,所以在通讯时要使用socket来和端口进行交互。像mysql默认端口号就为3306。

当一个请求方向数据库发送请求想要执行sql语句时,socket接收到请求后会根据编码转化为字符串信息,里面会有sql语句和身份信息等。
如果该请求方是第一次发送请求时则需要进行身份验证,socke会判断其中的身份标记是否合法,如果合法正确会继续放下执行,如果不合法则会直接返回错误。在一次进行身份验证后,后面的每次通信便不需要进行身份认证了,因为在认证一次后会建立链接,并添加标记,以后查看标记就可以完成认证,但是链接会占用内存,要注意及时关闭。

每一个设备和数据库进行连接后,socket都会记录下设备id,这样才知道把数据传到哪里。
同一时刻,一个socket中只能有一个id,如果有多个id,socket会不知道给谁回信息。因此如果有多个请求过来,就来建立多个socket。

在这之后后会解析sql语句,最后在数据库中执行sql语句,在执行时会根据sql中关键字的执行优先级进行执行。
在一条sql语句中可能会包含以下关键字:
select from join where group by having order by 聚合函数 limit top 以及逻辑运算符not and or 。
我们的编写的sql中的这些关键字在语法上的顺序为:

  1. select
  2. from
  3. where
  4. group by
  5. having
  6. order by

这个要求我们在编写sql时必须按照这个顺序书写,但是数据库在执行时并不是按照这个顺序执行。

sql在执行时关键字的优先级:

  1. from
  2. where
  3. group by
  4. having
  5. select
  6. order by
http://www.lryc.cn/news/327080.html

相关文章:

  • JVM虚拟机-实战篇
  • 上岸跨考生的备考经验,送给零基础跨考计算机的你!
  • js改变图片曝光度(高亮度)
  • 【NLP笔记】大模型prompt推理(提问)技巧
  • 【目标检测】西红柿成熟度数据集三类标签原始数据集280张
  • Java File类(文件操作类)
  • 正则表达式 vs. 字符串处理:解析优势与劣势
  • 1、goreplay流量回放
  • Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)
  • UDP send 出现大量“Resource temporarily unavailable”
  • 怎么拆解台式电脑风扇CPU风扇的拆卸步骤-怎么挑
  • Windows安装Odoo结合内网穿透实现公网访问本地企业管理系统
  • Portainer的替代Dockge?又一个Docker Compose管理器?
  • Midjourney AI绘图工具介绍及使用
  • clang-query 的编译安装与使用示例
  • echarts数据下钻如何配置
  • git 提交空目录
  • 【优化方案】Java 将字符串中的星号替换为0-9中的数字,并返回所有可能的替换结果
  • C语言复习-链表
  • Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题
  • 【Node.js】npx
  • hive授予指定用户特定权限及beeline使用
  • Vmware虚拟机无法用root直连说明
  • Visio中存在问题的解决方法
  • taro之Swiper的使用
  • 正大国际:金融行业发展趋势
  • vue中实现超出一行 展开和收起的功能
  • 记录一次使用cert-manager-颁发CA证书
  • 生成式AI的风险与挑战
  • 让IIS支持.NET Web Api PUT和DELETE请求