热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关系型数据库的工作原理(二)

数据库概览数据库不是简单的一堆文件叠加整理在一起,而是有多个组件相互合作而成。忽略具体某种数据库,一般数据库由以下组件构成:Fig.8核心

数据库概览

·数据库不是简单的一堆文件叠加整理在一起,而是有多个组件相互合作而成。忽略具体某种数据库,一般数据库由以下组件构成:

Fig. 8

    核心组件:

        进程管理器:很多数据库需要许多进程/线程同时都运行,所以搞了一个进程/线程池来管理这些进程/线程。 比如,有些数据库为了得到纳秒( nanoseconds) 信息,不直接使用操作系统的线程,而是通过自己创建的线程来实现。

        网络管理器:网络 I/O 是一个大问题,尤其是分布式数据库。 所以,许多数据库有自己的网络管理器。

        文件系统管理器: 磁盘 I/O 是数据库的最常见的瓶颈所在。 数据库有自己的文件系统管理器,可以更好的解决数据库与操作系统的文件系统之间数据交换, 甚至替换操作习惯的文件系统。

        内存管理器: 为了避免磁盘 I/O 的效率低下的问题,大量的内存的使用肯定很有价值。但是,如果操作大量内存时,必须一个独立的高效的内存管理器。特别是, 同一时间有很多查询都在存取内存时,显得尤为必要。

 安全管理器: 用户身份的鉴定和权限管理。

   客户端管理器: 管理多个客户端连接。

    工具:

        备份管理器: 备份和恢复一个数据库

        恢复管理器: 数据库发生崩溃后重启,需要把数据库的所有数据做到一致状态

   监控管理器: 使用 log 记录数据库的所有行为,并且提供工具和信息用以监控数据库

   Administration manager:恢复数据库的原数据( 比如某个表的表名和结构),提供工具和信息用以管理数据库、 Schemas(模式) 和表空间

  数据管理器:

      事务管理器:处理事务

      Cache 管理器: 在数据被使用前先加载到内存,保存将要写入数据库的数据

      数据存取管理器: 存取磁盘上的数据

   查询管理器:

       查询解析: 检查一个查询是否有效

 查询重写: 预优化一个查询

 查询优化: 优化一个查询

 查询执行: 编译以及执行一个查询

    

    现在回到最初的问题,即:数据库是如何处理一个 SQL 查询的,从客户端管理器->查询管理器->事务管理器三个部分来解释改问题。

 

客户端管理器:

    数据库的客户端管理器,负责处理来自客户的连接。客户,可以是一个服务器,或 Web 服务器, 或者一个终端用户和终端软件。 客户端管理器实现了各种不同的访问数据库的接口,比如众所周知的: JDBC, ODBC, OLE-DB,以及其他专用数据库接口。

Fig. 9

    当客户端连接数据库:

  1. 检查用户登陆验证信息(账号和密码),以及检查用户是否有访问数据库权限;
  2. 检查是否有空余线程/进程处理该连接;
  3. 检查数据库负载如何(是否过重);
  4. 如果连接需要等待,当超过等待时间,将返回可读的错误提示;
  5. 如果连接可用,查询将传递给查询管理器
  6. 由于查询处理是一个"all or noting"过程,故当查询到数据后,查询结果将部分存入缓存并开始发送给客户端。
  7. 客户端连接意外断开时,会收到可读接受,并释放连接的资源。

     


转:https://www.cnblogs.com/space-place/p/6559012.html



推荐阅读
  • PostgreSQL13.1中文手册 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 视图分区_组复制常规操作网络分区amp;混合使用IPV6与IPV4 | 全方位认识 MySQL 8.0 Group Replication...
    网络分区对于常规事务而言,每当组内有事务数据需要被复制时,组内的成员需要达成共识(要么都提交,要么都回滚)。对于组成员资格的变更也和保持组 ... [详细]
  • MFC程序连接MySQL成功实现查询功能,但无法实现修改操作——详解查询语句在MySQL中的使用过程
    selectxxx,xxx,xxxfromxxxwherexxxxxx,xxxxxx程序的日常开发中,我们经常会写到各种各样的简单的,复杂的查询sql语 ... [详细]
  • 语法:CREATE[索引类型]INDEX索引名称ON表名(列名)WITHFILLFACTOR填充因子值0~100GOUSE库名GOIFEXISTS(SELECT*FR ... [详细]
  • MySQL入门_MySQL入门篇!聊聊数据库与MySQL的相关概念
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MySQL入门篇!聊聊数据库与MySQL的相关概念相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • PB及ASA数据库程序的发布(转载)分类:pb历程2008-11-0220:341918人阅读评论(0)收藏举报数据库powerbui ... [详细]
  • ODBC和JDBC是做什么的?
    ODBC和JDBC是做什么的?数据库分享到:专业回答清水无月2006-07-2900:19什么是JDBC?JDBC,全称为JavaData ... [详细]
author-avatar
sleeping22
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有