增量式地更新統(tǒng)計的制作方法
【專利說明】增量式地更新統(tǒng)計
【背景技術】
[0001 ] 在某些類型的數據庫中,比如關系型數據庫中,查詢計劃優(yōu)化器使用關于數據庫 的數據進行統(tǒng)計。響應于接收查詢,生成關于如何搜索數據庫的多個查詢計劃。查詢計劃 優(yōu)化器作出關于這些查詢計劃中的哪些將在最短時間內根據搜索查詢中的術語引起搜索 數據庫的決定。依賴于數據庫,統(tǒng)計允許搜索查詢優(yōu)化器在無需從頭計算關于數據庫的數 據的信息的情況下,選擇查詢計劃。
【附圖說明】
[0002] 附圖圖示本文描述的原理的各種示例并且是說明書的一部分。圖示的示例僅僅是 示例并且不限制權利要求的范圍。
[0003] 圖1是根據本文描述的原理的網絡上的數據庫的示例的示意圖。
[0004] 圖2是根據本文描述的原理的數據庫列的樣本的示例的示意圖。
[0005] 圖3是根據本文描述的原理的唯一條目計數估計器的示例的示意圖。
[0006] 圖4A是根據本文描述的原理的布?。╞loom)過濾器的示例的示意圖。
[0007] 圖4B是根據本文描述的原理的直方圖的示例的示意圖。
[0008] 圖5是根據本文描述的原理從數據庫列的樣本刪除行的示例的示意圖。
[0009] 圖6是根據本文描述的原理添加插入到的數據庫列的樣本的示例的示意圖。
[0010] 圖7是根據本文描述的原理的布隆過濾器的示例的示意圖。
[0011] 圖8是根據本文描述的原理的直方圖的示例的示意圖。
[0012] 圖9是根據本文描述的原理用于增量式地更新數據庫統(tǒng)計的方法的示例的示意 圖。
[0013] 圖10是根據本文描述的原理的更新系統(tǒng)的示例的示意圖。
[0014] 圖11是根據本文描述的原理的更新系統(tǒng)的示例的示意圖。
[0015] 圖12是根據本文描述的原理的增量式地更新數據庫統(tǒng)計的過程的流程圖的示例 的示意圖。
【具體實施方式】
[0016] 為了提供查詢優(yōu)化器有益的統(tǒng)計信息,統(tǒng)計被更新。然而,更新統(tǒng)計導致數據庫能 力和處理資源耗盡。在某些情況下,因為資源被提供給更新統(tǒng)計,因此這種更新阻礙了其他 操作的性能。
[0017] 本文描述的原理包括在數據庫的數據分布已被確定在統(tǒng)計上保持不變時,用于利 用較少工作且基于樣本估計統(tǒng)計更新統(tǒng)計的機制。該機制確定數據庫中的什么數據已經改 變的足夠以值得更新統(tǒng)計,而不是僅基于樣本估計統(tǒng)計。這些原理包括用于增量式更新數 據庫的方法。這種方法包括對數據庫中的數據庫列的行進行采樣以生成第一樣本,隨后在 生成第一樣本之后,對數據庫列的修改的行的子集進行采樣以生成第二樣本,基于第一樣 本和第二樣本確定數據庫列是否發(fā)生分布變化,并且響應于確定存在分布變化而更新關于 數據庫列的數據庫統(tǒng)計。修改的行可包括刪除的行、插入的行、更新的行或其組合。
[0018] 在下面的描述中,出于解釋的目的,為了提供本系統(tǒng)和方法的全面理解,提出了許 多具體細節(jié)。然而,對本領域技術人員來說顯而易見的是,可在沒有這些具體細節(jié)的情況下 實踐本裝置、提供和方法。說明書中提及的"示例"或類似語言意味著描述的特定的特征、 結構或特性被包括在至少一個示例中,但不必在其他示例中。
[0019] 圖1是根據本文描述的原理的網絡上的數據庫(100)的示例的示意圖。在此示例 中,客戶設備(104)與網絡(102)通信,網絡(102)通信與數據庫(100)通信。
[0020] 客戶設備(104)可以是用戶使用來與數據庫(100)通信的任何適當的設備??蛻?設備(104)筆記本電腦、個人計算機、臺式機、電話、電子輸入板、電子設備、任何類型的客 戶端設備或其組合。
[0021] 用戶可以在客戶設備(104)的監(jiān)視器上顯示的搜索查詢域中輸入搜索查詢?;?搜索查詢術語,查詢計劃生成器生成多個查詢計劃,多個查詢計劃可用于搜索數據庫(100) 以從數據庫的內容中找到適當的搜索結果。查詢計劃優(yōu)化器選擇查詢計劃優(yōu)化器確定將用 最短的時間搜索數據庫內容的多個查詢計劃中的一個。查詢計劃優(yōu)化器至少部分地基于 存儲在數據庫(100)中和描述數據庫內容的統(tǒng)計做出決定以選擇查詢計劃。例如,數據庫 (100)可存儲直方圖、行計數、唯一條目計數、其它統(tǒng)計或其組合,以描述數據庫(100)中的 列信息。此統(tǒng)計使查詢計劃優(yōu)化器免于重新計算關于列中的數據的摘要信息。
[0022] 在數據庫的數據存在很小的變換時,關于數據庫列的統(tǒng)計可基于樣本被估計,以 避免數據可使用大量的資源來更新大量的統(tǒng)計。數據庫(100)包括更新系統(tǒng)(106),更新系 統(tǒng)(106)在適當的時候更新描述數據庫列的至少之一的統(tǒng)計的至少之一。更新統(tǒng)計的適當 時間是在統(tǒng)計分布具有統(tǒng)計改變時。
[0023] 更新系統(tǒng)(106)可隨時間的變化讓數據的樣本進入數據庫的列,并且將樣本相互 比較。如果樣本展現(xiàn)大的統(tǒng)計差異,則更新系統(tǒng)(106)可確定更新統(tǒng)計是適當的,而不是基 于樣本估計統(tǒng)計。進一步,更新系統(tǒng)(106)還可確定用于總結樣本之間的大的統(tǒng)計差異的 置信度的水平。預定的置信度閾值可包括95%置信度或在更新系統(tǒng)將使統(tǒng)計之一更新前被 超越的一些其他置信度水平。
[0024] 雖然此示例已經參照數據庫、查詢計劃生成器、查詢計劃優(yōu)化器、更新系統(tǒng)以及其 它部件的具體位置進行了描述,但是這些部件可以位于根據本文描述的原理的任何適當的 位置。例如,更細系統(tǒng)可以位于網絡部件而不是數據庫上,或位于客戶設備上。另外,查詢 計劃生成器和查詢計劃優(yōu)化器也可以位于網絡部件而不是數據庫上,或位于客戶設備上。
[0025] 圖2是根據本文描述的原理的數據庫列(202)的樣本(200)的示例的示意圖。在 此示例中,數據庫列(202)存儲信息的多個行(204)。數據庫可包括額外的信息列。數據庫 列的行(204)可包括任何適當數量的行。在某些示例中,數據庫列(202)可包括從僅幾行 到數億行。
[0026] 數據庫還包括與行關聯(lián)的統(tǒng)計,例如行的數量、唯一條目技術、其他統(tǒng)計或其組 合。這些統(tǒng)計可以與查詢計劃優(yōu)化器一起使用,該查詢計劃優(yōu)化器選擇將占用最短時間來 執(zhí)行的查詢計劃。
[0027] 通過計算唯一條目計數、一系列列值上的不相交區(qū)間的行計數的值對的更新統(tǒng) 計表來執(zhí)行直方圖收集。更新統(tǒng)計表是耗時操作,并且使用來自數據庫的存儲器、中央處 理單元和輸入/輸出的大量資源,因為其使用"分組依據"("group-by")操作以及"分 類"("sort")操作以計算列的唯一條目計數。數據庫管理系統(tǒng)利用抽樣以便減少該操作 的成本。相應地,這減少了輸入的大小并且改善了相應時間。
[0028] 更新系統(tǒng)在第一天從數據庫列取出行的樣本(200)。樣本(200)可以是來自數據 庫列(202)的行的隨機樣本。取出樣本(200)可包括將選中行的值拷貝到同一列中。在某 些示例中,樣本包括來自數據庫列(202)的所有行的至少1%。例如,如果數據庫列具有成 百萬行,則樣本表將包括至少上萬行,該至少上萬行包含從數據庫列(202)的選中行拷貝 的值。在一些示例中,樣本包括數據庫列的行的多于1%。
[0029] 更新系統(tǒng)可基于樣本(200)計算描述數據庫列的至少一些統(tǒng)計。例如,更新系統(tǒng) 可基于樣本估計唯一條目計數統(tǒng)計。
[0030] 雖然此示例已經參照數據庫列中行的具體數量和樣本的大小進行了描述,但是可 根據本文描述的原理使用任何適當數量的行和樣本大小。進一步,更新系統(tǒng)可取出多個數 據庫列的樣本并基于它們相應的樣本估計抽樣的數據庫列的每一個的統(tǒng)計。
[0031] 圖3是根據本文描述的原理的唯一條目計數估計器(300)的示例的示意圖。在此 示例中,更新系統(tǒng)的唯一條目計數估計器(300)基于樣本(200,圖2)估計唯一條目計數。唯 一條目計數表示樣本(200,圖2)中的唯一值。例如,樣本(200,圖2)中的三行包括值11。 因此,11構成一個唯一條目計數。一行包括值342。因此,342構成一個唯一條目計數。兩 行包括值654。因此,654構成一個唯一條目計數。進一步,一行包括值56。因此,56構成 一個唯一條目計數。結果,在圖3的示例中,唯一條目計數值是4。
[0032] 圖4A是根據本文描述的原理的布隆(bloom)過濾器(400)的示例的示意圖。在 此示例中,布隆過濾器(400)是包括表示樣本(200,圖2)的行的寄存器位圖(402)的數據 結構。寄存器中的每一個表示來自樣本值的二進制值。如果在樣本的行中存在大于〇的值, 則相應的布隆過濾器寄存器將存儲值1。另一方面,如果樣本行具有0值,那么相應的布隆 過濾器寄存器將存儲0。除了位圖(402),布隆過濾器還包括表