什么是直方图 什么是oracle的直方图
什么是直方图?
直方图直方图有什么用?直方图可以用来比较准确地判断一张照片是否过曝或欠曝。有经验的摄影者还可以通过直方图定性地判断一张照片的曝光是否合适。直方图不能做什么用?直方图不能用来作为判断一张照片曝光准确与否的绝对及唯一标准。更不能决定一张照片是否“好”或“不好”。直方图是什么直方图上黑色的线柱(密集的线条连在一起,看起来就是一片,但实际可以理解为独立的线条)表示照片中的信息的分布情况。其中纵坐标(线柱的高度)表示信息的多少,线柱越高,信息越多;横坐标表示照片的亮度分布,左侧为暗部,右侧为高光区。如何读直方图?直方图首先有左右两个边界,分别表示纯黑及纯白。两个边界中间,就是从纯黑到纯白的渐变。我们在读直方图时,就是看不同亮度上的信息有多少(线柱高度)。首先我们会看是否有紧贴左右边界的线柱,这些信息一般是溢出信息,即在照片中表现为纯黑和纯白。如果大量左侧边界的线柱较高,一般可以判断照片有大量欠曝区域;反之如果右侧边界线柱较高,则认为有大量过曝区域。这也是直方图最主要和最重要的作用。接着,我们看整个过渡空间内线柱高度的分布,可以对照片的亮度分布有一个定性认识。比如若线柱大量集中在左侧(以横坐标中间做划分),则说明整张照片偏暗;反之如果线柱主要集中在右侧,则说明照片整体较亮。摄影者可以据此与自己想得到的照片效果做对比。直方图的标准?首先直方图是没有绝对标准的,但是有一些判断的原则:一般来说希望线柱峰值保持在横坐标中端,向两端逐渐减少,在左右边界最最少(最好只有点接触)。但同时线柱又不能与边界距离太远,否则说明照片对比度较低,照片看起来比较“灰”。如果是剪影或夜景照片,允许有大量线柱紧贴左侧,因为画面中有大量黑色区域。如果是高调或逆光照片,线柱应该比较靠左。因为这类照片比较明亮,画面中有大量高光区。以图中直方图为例,线柱在左侧边界刚好终止,即没有溢出,也拥有较好的阴影过渡;右侧可以看到一部分线柱紧贴边界,这是因为照片中有一部分白云高光溢出,成了纯白,但范围较小,不影响照片。在过渡区,我们能看到一左一右两个峰值,而中间线柱较低,说明这张照片有很多较亮的画面(天空整体较亮),和很多较暗的画面(前景的栅栏和中景草地偏暗)。大家可以对照直方图的形态和实际画面,细心体会直方图与画面的关系。
什么是oracle的直方图
Oracle中使用直方图的场合:
在分析表或索引时,直方图用于记录数据的分布。通过获得该信息,基于成本的优 化器就可以决定使用将返回少量行的索引,而避免使用基于限制条件返回许多行的索引。直方图的使用不受索引的限制,可以在表的任何列上构建直方图。
构造直方图最主要的原因就是帮助优化器在表中数据严重偏斜时做出更好的规划:例如,如果一到两个值构成了表中的大部分数据(数据偏斜),相关的索引就可能无法帮助减少满足查询所需的I/O数量。创建直方图可以让基于成本的优化器知道何时使用索引才最合适,或何时应该根据WHERE子句中的值返回表中80%的记录。
通常情况下在以下场合中建议使用直方图:
(1)、当Where子句引用了列值分布存在明显偏差的列时:当这种偏差相当明显时,以至于 WHERE 子句中的值将会使优化器选择不同的执行计划。这时应该使用直方图来帮助优化器来修正执行路径。(注意:如果查询不引用该列,则创建直方图没有意义。这种错误很常见,许多 DBA 会在偏差列上创建柱状图,即使没有任何查询引用该列。)
(2)、当列值导致不正确的判断时:这种情况通常会发生在多表连接时,例如,假设我们有一个五项的表联接,其结果集只有 10 行。Oracle 将会以一种使第一个联接的结果集(集合基数)尽可能小的方式将表联接起来。通过在中间结果集中携带更少的负载,查询将会运行得更快。为了使中间结果最小化,优化器尝试在 SQL 执行的分析阶段评估每个结果集的集合基数。在偏差的列上拥有直方图将会极大地帮助优化器作出正确的决策。如优化器对中间结果集的大小作出不正确的判断,它可能会选择一种未达到最优化的表联接方法。因此向该列添加直方图经常会向优化器提供使用最佳联接方法所需的信息。
直方图有两种类别,等频直方图与等高直方图。
默认的,如果一个倾斜列上的唯一值超过了254个,那么ORACLE会对此列建立等高直方图,否则建立等频直方图。
通过如下方式,建立表TAB,更新字段B,让列B产生倾斜。并在B列上创建索引。
什么是统计直方图
统计直方图
对某一物理量在相同条件下做n次重复测量,得到一系列测量值,找出它的最大值和最小值,然后确定一个区间,使其包含全部测量数据,将区间分成若干小区间,统计测量结果出现在各小区间的频数M,以测量数据为横坐标,以频数M为纵坐标,划出各小区间及其对应的频数高度,则可得到一个矩形图,即统计直方图。