2016 - 2024

感恩一路有你

mysql怎么验证服务器 mysql8查询原理?

浏览量:3179 时间:2023-06-16 20:41:42 作者:采采

mysql8查询原理?

基本步骤是:。

1.客户端向服务器发送查询。

2.服务器首先检查查询缓存,如果命中缓存,它会立即返回存储在缓存中的结果。否则,进入下一阶段。

3。服务器执行SQL解析和预处理,然后优化器生成相应的执行计划。

4。MySql调用存储引擎的API,根据优化器生成的执行计划执行查询。

5。将结果返回给客户端。

MySQL客户端/服务器通信协议

MySQL客户端和服务器之间的通信协议是 "半双工 ",也就是说在任何一个wild时间,要么是服务器向客户端发送数据,要么是客户端向服务器发送数据,这两个动作不能同时进行。因此,我们可以 t和唐 不需要将消息分割成小块,然后单独发送。

这个协议让MySQL的通信变得简单快捷,但也在很多地方限制了MySQL。一端开始发送消息,另一端必须接受整个消息来响应它。It 这就像一个来回扔球的游戏:在任何时刻,只有一个人可以控制球,只有控制球的人可以回球。

相反,一般服务器通常会向用户响应大量数据,这些数据由多个数据包组成。当服务器开始响应客户端时。;的请求,客户端必须完全接受整个返回的结果,而不是简单地转到前一个结果,然后阻止服务器发送它。那个 这就是增加限制的原因。

查询状态

对于一个MySQL连接,或者说一个线程,在任何时刻都有一个状态,这个状态表示MySQL当前在做什么。最简单的方法是使用SHOW FULLPROC:。

Sl:线程等待客户端发送新的请求。

Qu:线程正在执行查询或将结果发送给客户端。

Lock:线程正在等待表锁。在等待行锁时不会出现。

分析和statistics:线程正在收集存储引擎统计信息并生成查询计划。

排序r:线程就是排序结果。

查询缓存

在解析SQL语句之前,如果查询缓存是打开的,MySql会首先检查查询是否命中缓存中的数据。如果当前查询恰好命中查询缓存,MySQL会在返回查询结果前检查一次用户权限,如果权限没问题就返回。在这种情况下,不会解析查询,也不需要生成执行计划。,将不会被执行。

查询优化处理

查询缓存的下一步是解析SQL,预处理和优化SQL执行计划。此过程中的任何错误都可能终止查询。

语法分析和预处理

首先,MySQL通过关键字解析SQL语句,生成相应的 "解析树和。MySQL解析器将使用MySQL语法规则并解析查询。

预处理会根据MySQL规则进一步检查解析树是否合法。

查询优化

如果语法树被认为是合法的,那么它现在将被优化器转换成执行计划。

MysQL使用基于成本的优化器,它会尝试使用一些执行计划来预测查询的成本,并选择成本最低的一个。

MySQL优化器会选择错误的执行计划有很多原因。

1。统计信息不准确。

2。执行计划中的估计成本不等于实际执行成本。

3。MySQL和最优性可能不是你想的那样。

4。MySQL不考虑其他并发查询。

:,MySQL可以支持的优化类型。

1。重新定义关联表的顺序。

2。外部连接转换为内部连接。

3。使用等效转换规则

4。Optimize COUNT()、MIN和max()-按索引优化。

5。估计值被转换成一个常数表达式。

6。重叠索引扫描

7。子查询优化

8。提前终止查询––限制

9。等效传播

10。比较list in()-不是简单的or,对其进行排序并使用二分搜索法来判断列表中的值是否满足。

mysql连接不上服务器怎么办?

1.首先,确认网络配置没有问题。2.建立一个数据库用户,并将所有主机访问权限授予该用户,以便您可以通过该用户访问数据库。1授予*上的所有权限。* root @ %由带有GRANT选项的密码标识;上面的语句意味着授予root用户访问任何主机的任何数据库的权限。注意password为你设置的root密码。

MySQL 客户端 计划 执行 服务器

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。