川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

数据库中的数据结构以及查询过程

作者:川石学院 日期:2021-11-26 17:19:37 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“数据库中的数据结构以及查询过程”。

数据库中的数据结构以及查询过程(图1)

  一、数据结构

  数据结构通常会影响两个维度的优化:一是响应时间;二是资源消耗。

  ● 选择时数据类型的影响

  选择数据类型通常应该遵守以下规则:

  1.越小越好

  所谓的越小越好是指数据类型所占的字节空间,即所占的内存情况。

  2.数据类型越简单越好

  通常来说越简单的数据类型,在处理时所消耗的CPU时间频率是最少的,数据类型越复杂,所消耗的CPU时间频率就会越长。例如时间、日期、IP地址等,之所以会这样是因为复杂的数据类型在比较时不是简单的ACSII比较,必须借用专门的函数来比较。

  3.避免使用NULL

  在定义表时,避免允许使用NULL,如果非要使用也是使用NOT NULL,因为NULL表示不是一个值,这样就不好比较。

  ● 常见数据类型说明

  1.整型

  整数又分为:TINYINT、smallint、mediumint、int、bignit,分别所点的字节数为8、16、24、32、64个字节空间

  2.实型

  实型分为:Float、double,分别占4个和8个字节

  3.字符

  字符类型又分两种:char和varchar

  •   char是固定的大小,例如char(10),占10个字节

  •   varchar可变长度,例如varchar(10),如果执行我们没有用到10个字符,那么用到多少个就内存就会分配多少个,但是最多不超过10个字符,最后会有额外的字节用来做标识的。

  4.日期与时间

  日期与时间所点字节数与日期和时间的格式无关,固定的占8个字节

  二、 查询过程

数据库中的数据结构以及查询过程(图2)

  所有我们输入的SQL语句最后都会变成一个可执行的计划,放在CPU中来理解就是一个任务,每个CPU(如何CPU是单核的话)那么只同时处理一个任务,即CPU只能同时处理一个线程。

  查询在运行的有不同状态:

  1.休眠

  等待新的查询

  2.查询

  线程正在执行查询或将查询的结果返回到客户端

  3.锁定

  表示表处于锁定状态

  4.分析与统计

  分析和统计相关的信息,并对查询进行优化

  5.拷贝数据到临时表

  将结果集的数据拷贝临时表

  6.排序结果

  对查询的结果进行排序

  7.发送数据

  发送数据一般理解将数据返回到客户端,也可以是查询状态之间的数据传递。

  查看当前查询状态的命令如下:

  SHOW FULL PROCESSLIST

  查询过程的步骤如下:

  1.客户端向服务器发送请求

  •   借用于MYSQL的协议将客户端的请求发送到服务器端。MYSQL协议是一种半双工协议,即可以发送也可以接收数据。但不能同时发送和接受数据。

  2.查询缓存

  •   检查查询结果在缓存是否存在,如果在缓存就存在那么直接将缓存的数据发送给客户端即可,如果缓存中不存在我们需要的结果数据,那么到第三个步骤。

  •   如果判断缓存中是否有我们需要的结果集的数据,是通过哈希查询来确定,是一种精确的哈希方法,并区别分大小写。

  3.解析与优化查询

  MYSQL会将我们的语句变成一个解析树,生成解析树会去检查语义、语法是否错误,判断表的信息是否正确等。

  查询优化器是对我们的SQL语句进行优化最后变成一个查询执行计划。

  通常优化的内容的包括以下部分:

  --->对联接表进行重新排序

  --->将外链接变成内链接进行查询

  --->代数等价法则,即关系运算符的处理

  --->优化聚合函数: count()、min()、max()

  --->计算和减少常量表达式

  --->覆盖索引

  --->子查询优化,将多个子查询转换为独立查询

  --->尽早终结,是指执行的查询语句不要写的过长

  --->优化in集合,优化in集合中的关系谓词

  4.生成执行计划

  将语句优化好的,会重新生成一个解析树,再将这个解析树生成一个可执行的计划。

  5.查询引擎

  对API函数对引擎进行操作,通过引擎到数据库中取数据。再将数据发送到客户端。

  MYSQL数据库支持第三开发的引擎。

今天关于“数据库中的数据结构以及查询过程”就学习到这里了,每个工作日小编都会更新一个小知识,希望大家多多关注我们,一起来学习喔!


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-11-26 17:19:37
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-11-26 17:19:37
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-11-26 17:19:37
  • 建筑工程专业朱同学成功转行为软件测试人!2021-11-26 17:19:37
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-11-26 17:19:37
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-11-26 17:19:37
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-11-26 17:19:37
  • 文科生转行软件测试照样拿下高薪15K!2021-11-26 17:19:37
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-11-26 17:19:37
  • 毕业1年,迷茫的他最终选择转行软件测试2021-11-26 17:19:37