关系型数据库工作原理 |
您所在的位置:网站首页 › 关系型数据库的基本特征 › 关系型数据库工作原理 |
本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 本文翻译了如下章节, 介绍数据库的统计分析: 在了解数据库如何做查询优化前,我们先讲一下数据库如何做数据特征分析。没有数据特征分析的数据库不是优秀的数据库。 如果你不指令数据库分析数据,它不会主动去做,它将会做最坏的假设(没有优化空间)。数据库需要哪些类型的信息呢? 为了说清楚这个问题,我必须要简单讲一下数据库和操作系统是如何存储数据的。 它们使用一种叫页或者块的最小存储单元,默认有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 |