针对网站开发软件 代替手动,建设公司网站入账,北京企业建设网站制作,wordpress4.9.7本文将介绍数据库在储存和通讯时的原理
数据库储存
首先#xff0c;数据库的作用持久化存储数据#xff0c;数据库的存储形式就是文件#xff0c;每一张表就是一个文件#xff0c;其他数据也是文件形式#xff0c;比如索引文件。 比如像mysql数据库#xff0c;其中的数…本文将介绍数据库在储存和通讯时的原理
数据库储存
首先数据库的作用持久化存储数据数据库的存储形式就是文件每一张表就是一个文件其他数据也是文件形式比如索引文件。 比如像mysql数据库其中的数据其实是一个个文件储存在硬盘中当其在运行时数据就会暂时存放在内存中为了更快的查询。
并且数据库在设计时尽量保证每一行信息的长度都是一样的这样设计在查询时速度是最快的. 这样虽然速度变快了但是在不建索引的情况下执行sql语句需要遍历整个数据库对内存的消耗很大。 因此为了更高效地查询数据库数据库可以根据某一列的信息形成索引文件或者结合多列形成组合索引。 索引文件中每一列形成一个排序的文件里面会有数据列和地址。 索引文件小而且时有序的使用索引后速度就会提升很多 索引文件存在时间也特别短查询完就会销毁增强了抗并发能力。
数据库通讯
数据库在和其他请求方在进行通讯时由于需要网络请求所以在通讯时要使用socket来和端口进行交互。像mysql默认端口号就为3306。
当一个请求方向数据库发送请求想要执行sql语句时socket接收到请求后会根据编码转化为字符串信息里面会有sql语句和身份信息等。 如果该请求方是第一次发送请求时则需要进行身份验证socke会判断其中的身份标记是否合法如果合法正确会继续放下执行如果不合法则会直接返回错误。在一次进行身份验证后后面的每次通信便不需要进行身份认证了因为在认证一次后会建立链接并添加标记以后查看标记就可以完成认证但是链接会占用内存要注意及时关闭。
每一个设备和数据库进行连接后socket都会记录下设备id这样才知道把数据传到哪里。 同一时刻一个socket中只能有一个id如果有多个idsocket会不知道给谁回信息。因此如果有多个请求过来就来建立多个socket。
在这之后后会解析sql语句最后在数据库中执行sql语句在执行时会根据sql中关键字的执行优先级进行执行。 在一条sql语句中可能会包含以下关键字 select from join where group by having order by 聚合函数 limit top 以及逻辑运算符not and or 。 我们的编写的sql中的这些关键字在语法上的顺序为
selectfromwheregroup byhavingorder by
这个要求我们在编写sql时必须按照这个顺序书写但是数据库在执行时并不是按照这个顺序执行。
sql在执行时关键字的优先级
fromwheregroup byhavingselectorder by