sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_(转)数据库的原理(二)...

客户端管理器负责处理客户端通信,验证用户权限,管理查询执行。当连接数据库时,它检查验证信息、空闲进程、数据库负载,并将查询发送至查询管理器处理。查询管理器对查询进行解析、重写、优化,然后执行。优化器使用统计信息来制定最佳执行计划,降低查询成本。理解这些过程对于优化数据库性能至关重要。
摘要由CSDN通过智能技术生成

9cad2397196c0452288f434fdcccec3c.png

客户端管理器

客户端管理器是处理客户端通信的。客户端可以是一个(网站)服务器或者一个最终用户或最终应用。客户端管理器通过一系列知名的API(JDBC, ODBC, OLE-DB …)提供不同的方式来访问数据库。

客户端管理器也提供专有的数据库访问API。

当你连接到数据库时:

管理器首先检查你的验证信息(用户名和密码),然后检查你是否有访问数据库的授权。这些权限由DBA分配。

然后,管理器检查是否有空闲进程(或线程)来处理你对查询。

管理器还会检查数据库是否负载很重。

管理器可能会等待一会儿来获取需要的资源。如果等待时间达到超时时间,它会关闭连接并给出一个可读的错误信息。

然后管理器会把你的查询送给查询管理器来处理。

因为查询处理进程不是『不全则无』的,一旦它从查询管理器得到数据,它会把部分结果保存到一个缓冲区并且开始给你发送。

如果遇到问题,管理器关闭连接,向你发送可读的解释信息,然后释放资源。

8c78a3b68f8fff01938a8f8799e0f2c5.png

客户端管理器是处理客户端通信的。客户端可以是一个(网站)服务器或者一个最终用户或最终应用。客户端管理器通过一系列知名的API(JDBC, ODBC, OLE-DB …)提供不同的方式来访问数据库。

客户端管理器也提供专有的数据库访问API。

当你连接到数据库时:

管理器首先检查你的验证信息(用户名和密码),然后检查你是否有访问数据库的授权。这些权限由DBA分配。

然后,管理器检查是否有空闲进程(或线程)来处理你对查询。

管理器还会检查数据库是否负载很重。

管理器可能会等待一会儿来获取需要的资源。如果等待时间达到超时时间,它会关闭连接并给出一个可读的错误信息。

然后管理器会把你的查询送给查询管理器来处理。

因为查询处理进程不是『不全则无』的,一旦它从查询管理器得到数据,它会把部分结果保存到一个缓冲区并且开始给你发送。

如果遇到问题,管理器关闭连接,向你发送可读的解释信息,然后释放资源。

查询管理器

5da987547dd3bfcf59874d4785b09454.png

这部分是数据库的威力所在,在这部分里,一个写得糟糕的查询可以转换成一个快速执行的代码,代码执行的结果被送到客户端管理器。这个多步骤操作过程如下:

查询首先被解析并判断是否合法

然后被重写,去除了无用的操作并且加入预优化部分

接着被优化以便提升性能,并被转换为可执行代码和数据访问计划。

然后计划被编译

最后,被执行

这里我不会过多探讨最后两步,因为它们不太重要。

看完这部分后,如果你需要更深入的知识,我建议你阅读:

关于成本优化的初步研究论文(1979):关系型数据库系统存取路径选择。这个篇文章只有12页,而且具备计算机一般水平就能理解。

非常好、非常深入的 DB2 9.X 如何优化查询的介绍

非常好的PostgreSQL如何优化查询的介绍。这是一篇最通俗易懂的文档,因为它讲的是『我们来看看在这种情况下,PostgreSQL给出了什么样的查询计划』,而不是『我们来看看PostgreSQL用的什么算法』。

官方SQLite优化文档。『易于』阅读,因为SQLite用的是简单规则。再者,这是唯一真正解释SQLite如何工作的官方文档。

非常好的SQL Server 2005 如何优化查询的介绍

Oracle 12c 优化白皮书

2篇查询优化的教程,第一篇 第二篇。教程来自《数据库系统概念》的作者,很好的读物,集中讨论磁盘I/O,但是要求具有很好的计算机科学水平。

另一个原理教程,这篇教程我觉得更易懂,不过它仅关注联接运算符(join operators)和磁盘I/O。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值