zoukankan      html  css  js  c++  java
  • 关系型数据库的工作原理(二)

    数据库概览

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

    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. 客户端连接意外断开时,会收到可读接受,并释放连接的资源。
  • 相关阅读:
    #sort 快速排序 20. 9.14
    #Trie Trie树调试模板 20.09.21
    #operator ——“Kruskal算法求最小生成树 中的 operator” ~20.8.17
    #STL #List 容器函数以及一些内置函数的用法
    刷题周记(三)——#最小生成树:Kruskal#二分图:染色法、匈牙利算法#拓扑#DFS:排列数字、n-皇后#BFS:走迷宫、八格码#List容器
    #周测 9 —— 高低位交换、Subsequences Summing to Sevens S、积木大赛、跳石头
    刷题周记(二)——KMP,Trie,最大异或对,(并查集)合并集合、连通块中点的数量、食物链,堆排序,单多源最短路、Dijkstra、bellman-ford、SPFA、Floyd、(堆优化)Prim
    4.SQL(数据库变更)
    3.SQL(查询)
    2.Oracle基本使用
  • 原文地址:https://www.cnblogs.com/space-place/p/6559012.html
Copyright © 2011-2022 走看看