当前位置: 首页 > 网络应用技术

MySQL查询语句从返回结果开始。

时间:2023-03-08 01:26:04 网络应用技术

  在写了很多查询语句之后,我尚未关注从开始到查询的选择语句,以实现返回数据。

  我只遵循查询数据返回,我很少注意返回该数据的方式。

  例如,MySQL Server地址或用户密码错误(例如SQL语句语法错误)如何判断MySQL。

  自右认知返回直接从表格的数据?

  直到最近,我们公司需要进行元数据管理系统,我突然想到了这个问题。如果选择要检查此功能,我会写。

  因此,最好的方法是查看如何实现MySQL的官方网站,并将执行过程直接移至元数据管理模块。

  您是否必须自己独立思考然后进行验证,那么,如果您首先考虑MySQL的执行过程,该怎么办?

  我想到了主要执行步骤。我可以链接到可以链接到数据库的服务器。查询语句格式没有问题,查询表和字段都很好,因此只需转到查询即可。

  去看看官员的情况...

  当我们执行普通的选择语句时,我们通常会将MySQL数据库与连接池连接。

  连接池配置主要包括IP地址,端口号(默认3306),用户名和密码。

  当连接信息正确时,MySQL语句DE -Database查询符合SQL语句的记录。执行此选择语句时,MySQL内部的执行过程大致如下:

  连接器验证对于MySQL Server的地址和端口是正确的,无论用户名是否正确并且密码正确,以及当前用户是否具有查询权限。

  如果这些是正确的,则可以与MySQL Server建立连接,那么在连接是问题之后如何管理此连接的方法。

  当前用户是查询当前语句并发布连接还是建立长连接维护连接查询状态。

  MySQL的方法是与服务器建立连接。完成TCP握手后,将保持较长的连接状态。如果您甚至检查该服务上的查询语句,则没有其他操作,那么此连接处于空闲状态。您可以使用命令show ProcessList查看。

  当然,我们不能始终保持这种空闲连接始终占据资源,因此我们可以设置一个参数值来配置此断开的自由连接时间。

  就像我们设置了REDIS缓存到期时间一样,您一直在使用当前的缓存,因此缓存的到期时间将始终刷新,但是一旦您不使用当前的缓存,我们就会在缓存到期时缓存。配置的最大时间,连接断开。

  MySQL的官方配置参数是Wait_timeout,默认情况下为8小时。

  在这一点上,与MySQL的连接已经完成,可以在断开连接之前正常使用。如果断开连接,则需要重新建立连接。

  我看到缓存的第一个印象是nosql的缓存。

  然后,我认为MySQL将对每个查询语句都有一个缓存。如果您每次都相同查询的句子,查询结果是相同的,那么我将从mySQL缓存中获得结果。如何判断查询结果和缓存是一致且不变的?

  MySQL的方法是打开类似于键值的地图结构的数据结构。

  关键是一个查询语句,值是查询的结果。当查询语句出现时,我们首先转到此键值的缓存以找到结果。如果找到结果,请直接返回。

  我在查询语句中确保查询结果与数据库查询的结果一致吗?

  MySQL的方法是,只要您使用更新操作查询表,就可以清理该表的所有缓存。你能这样理解吗?存储在此查询的缓存时间段的键值中的数据,数据库的相应表未更新,因此缓存查询的结果与数据库查询的结果一致。

  问题带有如此频繁更新的查询缓存。这是毫无意义的。它会经常删除查询缓存。最好在不需要更新的一些表静态数据表上使用MySQL缓存效果。

  如果我们需要缓存,我们需要使用其他技术(例如Redis Cache)实现更多。

  MySQL8.0之后,放弃了MySQL的查询缓存。高速缓存知识是在下面查看分析仪。

  分析仪很容易理解,即您编写的SQL查询语句的分析是正确的。

  它将从语法和文字的角度进行分析。我要我分析关键字是否正确以及是否有关键字,例如Select,从中。

  对整个句子的分析将把查询语句分为几段。从选择到表单,这是一个段落。形式到哪里是段落。在哪里之后,这是一段。分析整个语句是否存在问题。MYSQL还必须具有自己的分析逻辑,并且 - 深度研究没有。

  如果分析发现书面SQL语句在问题上存在问题,则将提供错误消息,并且将提示错误消息的位置。

  执行分析仪后,您编写的查询语句基本上是没有问题的问题。

  在上面分析的过程中,我没想到需要优化器。我认为SQL语句是正确的。然后查询的结果是执行查询。MySQL在查询之前添加优化器。

  顾名思义,优化器优化了我们编写的SQL语句。例如,如果有索引,它将确定采用哪个索引,如果存在表关联,它将判断哪个表是关联的,哪个表是为了优化我们通过的执行逻辑编写的SQL优化器,但是执行结果不会改变,优化后的效率(时间)将得到提高。

  如果我们编写的SQL没有优化,我认为MySQL不需要具有优化器的步骤,但是我们不能做到...

  优化器是在蛋糕上锦上添花的步骤。

  执行器将执行我们编写的SQL语句,这是查询过程的最后一步。

  在执行过程中,我将转到查询结果。MySQL将在此步骤中确定用户在此表上具有查询权限,但是我想知道该判断是否具有表的权限。优化器执行器做什么。

  执行执行器后,结果集将将结果集返回到客户端。在此点,整个查询过程已经结束。

  在这一点上,我对从查询到返回数据的整个SQL查询语句有了一般的了解。然后,如果您需要优化MySQL的执行效率,您不仅会分析执行器的步骤。

  好的,请祝您一个快乐的国庆日.........