关系型数据库工作原理

您所在的位置:网站首页 关系型数据库的基本特征 关系型数据库工作原理

关系型数据库工作原理

2024-07-06 18:24| 来源: 网络整理| 查看: 265

本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies

本文翻译了如下章节, 介绍数据库的统计分析:

这里写图片描述

Statistics–数据特征统计分析

在了解数据库如何做查询优化前,我们先讲一下数据库如何做数据特征分析。没有数据特征分析的数据库不是优秀的数据库。

如果你不指令数据库分析数据,它不会主动去做,它将会做最坏的假设(没有优化空间)。数据库需要哪些类型的信息呢?

为了说清楚这个问题,我必须要简单讲一下数据库和操作系统是如何存储数据的。 它们使用一种叫页或者块的最小存储单元,默认有4KB或者8KB的大小。这意味着即使你只需要1KB的空间,它也会分配一整页的大小。如果一页是8KB,那么就有7KB被浪费了。

回到数据特征统计分析上来。当你要求数据库收集统计数据时,它将计算如下一些信息:

数据库表的记录行数。对表的每一列,做如下处理: 数据去重。计算数据的长度,包含最小长度、最大长度、平均长度。统计数值范围。包含最小值、最大值、平均值。分析表中的索引。

这些统计信息将用于帮助优化器评估查询将用到的磁盘I/O、CPU和内存大小。

对每列数据做统计分析很重要。例如:一张个人信息表将通过FIRST_NAME, LAST_NAME与其它两张表做关联查询。 统计发现这张表中的FIRST_NAME仅有1000个不同值,而LAST_NAME有1000000个不同值。数据库将修改联表顺序,将FIRST_NAME,LAST_NAME调整为LAST_NAME, FIRST_NAME。因为LAST_NAME的差异值更大,优先比较LAST_NAME能减少比较次数。大多数情况下,对于每次LAST_NAME的比较,比较两到三个字符就可以确认(两列值不同)了。

这些是最基础的统计。你也可以让数据库做更高级的统计分析(称为数据直方图)。数据直方图揭示了每一列值的分布概况。例如:

出现频率最高的值是什么。每个值的数量。…

这些额外的统计信息将帮助数据库找到更优的查询方案。特别是对于等值判断(ex: WHERE AGE = 18)或者范围比较(ex: WHERE AGE > 10 and AGE



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3