處理具有混合存儲(chǔ)器的數(shù)據(jù)庫中的查詢的設(shè)備和方法
【專利說明】處理具有混合存儲(chǔ)器的數(shù)據(jù)庫中的查詢的設(shè)備和方法
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)基于并且要求于2014年2月20日提交的韓國(guó)專利申請(qǐng)第10-2014-0019730號(hào)的權(quán)益,通過引用將其全部?jī)?nèi)容結(jié)合在此。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及用于關(guān)系數(shù)據(jù)庫系統(tǒng)(relat1nal database system)中的表格分區(qū),并且更具體地,涉及處理具有內(nèi)存表格空間和磁盤表格空間的混合存儲(chǔ)器(hybridstorage)的關(guān)系數(shù)據(jù)庫系統(tǒng)中的查詢的設(shè)備和方法,其中表格分區(qū)技術(shù)被擴(kuò)展以便以混合的方式使用磁盤表格空間和內(nèi)存表格空間,該設(shè)備和方法能夠:實(shí)現(xiàn)由于一個(gè)邏輯表格中的不同數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)辨別,按照存儲(chǔ)的差異創(chuàng)建掃描計(jì)劃以建立對(duì)于旨在訪問具有不同屬性的存儲(chǔ)的查詢的最佳掃描計(jì)劃,并且通過提供將最新數(shù)據(jù)存儲(chǔ)在內(nèi)存表格空間中并且將已經(jīng)過某個(gè)時(shí)段的舊的數(shù)據(jù)依次轉(zhuǎn)移到磁盤表格空間中的基于時(shí)間分區(qū)的表格功能實(shí)現(xiàn)有限的存儲(chǔ)容量的有效利用同時(shí)獲得對(duì)查詢的快速響應(yīng)。
【背景技術(shù)】
[0004]最近,關(guān)系數(shù)據(jù)庫系統(tǒng)已在許多領(lǐng)域中廣泛用于存儲(chǔ)數(shù)據(jù)。在關(guān)系數(shù)據(jù)庫系統(tǒng)中,相同類型的數(shù)據(jù)被邏輯收集并存儲(chǔ)在邏輯表格中。組成表格的每個(gè)數(shù)據(jù)項(xiàng)稱為行并且一行由多個(gè)列組成。
[0005]順便提及,隨著表格(其是具有相同的邏輯屬性的數(shù)據(jù)的集合)的量的增加,提出將表格劃分成具有橫向分區(qū)(或行束)的幾個(gè)部分(segment)并且存儲(chǔ)它們以方便管理的技術(shù)。物理水平分區(qū)的每個(gè)表格部分稱為分區(qū)表格。利用分區(qū)表格的該表格分區(qū)技術(shù)的使用使用戶能夠指定放置每個(gè)分區(qū)表格的物理位置,從而給出同時(shí)訪問相關(guān)表格的分布。
[0006]同時(shí),為了解決快速響應(yīng)速度的要求,關(guān)系數(shù)據(jù)庫系統(tǒng)最近已采用主內(nèi)存數(shù)據(jù)庫以將數(shù)據(jù)存儲(chǔ)在內(nèi)存中而不是磁盤中。當(dāng)關(guān)系數(shù)據(jù)庫系統(tǒng)使用內(nèi)存作為數(shù)據(jù)存儲(chǔ)的主內(nèi)存時(shí),與傳統(tǒng)的基于磁盤的數(shù)據(jù)庫相比,在對(duì)表格的插入、刪除、和查詢操作方面,可預(yù)期3至10倍的性能改善。然而,僅能夠?qū)?shù)據(jù)存儲(chǔ)在內(nèi)存中的數(shù)據(jù)庫系統(tǒng)由于存儲(chǔ)容量的限制而不適合于存儲(chǔ)大量數(shù)據(jù)。
[0007]以下是關(guān)于基于磁盤的關(guān)系數(shù)據(jù)庫與基于內(nèi)存的關(guān)系數(shù)據(jù)庫之間的結(jié)構(gòu)和屬性的簡(jiǎn)短描述。
[0008]首先,為了說明基于磁盤的關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)和屬性,基于磁盤的關(guān)系數(shù)據(jù)庫將表格數(shù)據(jù)以塊的形式存儲(chǔ)在磁盤中,響應(yīng)于來自用戶的查詢將數(shù)據(jù)塊讀取到主內(nèi)存的緩存區(qū)域中,并且在主內(nèi)存上對(duì)數(shù)據(jù)塊進(jìn)行數(shù)據(jù)處理。
[0009]在數(shù)據(jù)處理過程中,當(dāng)接收到改變數(shù)據(jù)的DML(數(shù)據(jù)操縱語言)請(qǐng)求時(shí),緩存中的數(shù)據(jù)塊在內(nèi)存上被改變并且改變以重做日志(redo log)的形式預(yù)先存儲(chǔ)在磁盤中,使得當(dāng)服務(wù)器發(fā)生故障(go down)時(shí)還沒有被反映在磁盤中的改變可沒有任何損失地被恢復(fù)。此夕卜,改變的撤消日志存儲(chǔ)在撤消塊中以便觀看舊版本的全部數(shù)據(jù)。
[0010]此外,存儲(chǔ)在磁盤上的內(nèi)容以將緩存中改變的無效數(shù)據(jù)(dirty data)塊定期反映到磁盤的方式利用最新數(shù)據(jù)更新。
[0011]然而,盡管基于磁盤的關(guān)系數(shù)據(jù)庫將經(jīng)常使用的磁盤數(shù)據(jù)塊放在主內(nèi)存的緩存上以改善性能,但這樣會(huì)受到磁盤的1性能的顯著影響,因?yàn)樗袛?shù)據(jù)塊、重做日志、和撤消日志必須被存儲(chǔ)在磁盤中。此外,基于磁盤的關(guān)系數(shù)據(jù)庫由于緩存的尺寸相對(duì)小于磁盤,所以會(huì)經(jīng)受讀取數(shù)據(jù)塊的查詢執(zhí)行延遲。
[0012]下面,說明基于內(nèi)存的關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)和屬性,與基于磁盤的關(guān)系數(shù)據(jù)庫不同,基于內(nèi)存的關(guān)系數(shù)據(jù)庫基本上將表格數(shù)據(jù)僅存儲(chǔ)在內(nèi)存中以及在磁盤中存儲(chǔ)在過去的特定點(diǎn)的利用僅一種類型的備份圖像的數(shù)據(jù)并存儲(chǔ)從那時(shí)起已經(jīng)改變的日志數(shù)據(jù)以用于服務(wù)器故障(server down)時(shí)恢復(fù)數(shù)據(jù)庫。
[0013]因此,當(dāng)響應(yīng)于來自用戶的查詢?cè)L問數(shù)據(jù)時(shí),數(shù)據(jù)可直接從內(nèi)存表格中讀取。因此,基于內(nèi)存的關(guān)系數(shù)據(jù)庫不會(huì)經(jīng)歷在基于磁盤的數(shù)據(jù)庫中出現(xiàn)的將數(shù)據(jù)塊讀取到緩存中的磁盤I/o延遲。
[0014]換言之,基于內(nèi)存的關(guān)系數(shù)據(jù)庫不再需要以塊的形式的保持?jǐn)?shù)據(jù)以優(yōu)化讀取和寫入磁盤。此外,基于內(nèi)存的數(shù)據(jù)庫消除了對(duì)保存撤消日志的需要,因?yàn)槠湟詣?chuàng)建被連接的行單元中的內(nèi)存中的數(shù)據(jù)的過去的版本的方式確保大量讀取。此外,因?yàn)椴淮嬖诠芾韷K單元的結(jié)構(gòu)所必需的鎖定開銷(lock overhead),所以基于內(nèi)存的關(guān)系數(shù)據(jù)庫能夠優(yōu)化對(duì)用戶查詢的處理。
[0015]即使對(duì)于引起數(shù)據(jù)改變的DML,基于內(nèi)存的關(guān)系數(shù)據(jù)庫也僅存儲(chǔ)包括改變的重做日志數(shù)據(jù)。因此,基于內(nèi)存的數(shù)據(jù)庫在節(jié)約磁盤容量方面具有許多優(yōu)勢(shì)。
[0016]然而,如上所述,基于內(nèi)存的關(guān)系數(shù)據(jù)庫由于其內(nèi)存大小的限制而不能用作大量數(shù)據(jù)存儲(chǔ)。
[0017]因此,需要借助具有磁盤和內(nèi)存的混合存儲(chǔ)器的數(shù)據(jù)庫中的表格的橫向分區(qū)方法的擴(kuò)展,提供能夠?qū)崿F(xiàn)高響應(yīng)速度同時(shí)解決基于內(nèi)存的關(guān)系數(shù)據(jù)庫中的容量限制的問題的用于查詢語句和邏輯表格的最優(yōu)化方法。
【發(fā)明內(nèi)容】
[0018]鑒于以上所述,本發(fā)明提供了用于處理具有內(nèi)存表格空間和磁盤表格空間的混合存儲(chǔ)器的關(guān)系數(shù)據(jù)庫系統(tǒng)中的查詢的設(shè)備和方法,在該關(guān)系數(shù)據(jù)庫系統(tǒng)中,表格分區(qū)技術(shù)被擴(kuò)展以便以混合的方式使用磁盤表格空間和內(nèi)存表格空間,該設(shè)備和方法能夠:實(shí)現(xiàn)由于一個(gè)邏輯表格中的不同數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)辨別,按照存儲(chǔ)的差異創(chuàng)建掃描計(jì)劃以建立對(duì)于旨在訪問具有不同屬性的存儲(chǔ)的查詢的最佳掃描計(jì)劃,并且通過提供將最新數(shù)據(jù)存儲(chǔ)在內(nèi)存表格空間中并且將已經(jīng)過某個(gè)時(shí)段的舊的數(shù)據(jù)依次轉(zhuǎn)移到磁盤表格空間中的基于時(shí)間分區(qū)的表格功能實(shí)現(xiàn)有限的存儲(chǔ)容量的有效利用同時(shí)獲得對(duì)查詢的快速響應(yīng)。
[0019]根據(jù)本發(fā)明的一方面,提供了一種用于處理數(shù)據(jù)庫系統(tǒng)中的查詢的設(shè)備,該設(shè)備包括:表格空間元數(shù)據(jù),存儲(chǔ)關(guān)于表格存儲(chǔ)在哪個(gè)表格空間中的信息,其中,表格存儲(chǔ)在包含磁盤表格空間和內(nèi)存表格空間的數(shù)據(jù)庫系統(tǒng)中;查詢編譯單元,在接收到查詢語句時(shí),被配置為通過參考有關(guān)表格空間的信息檢查處理查詢語句所需要的表格是存儲(chǔ)在磁盤表格空間中還是內(nèi)存表格空間中并且創(chuàng)建表格的掃描計(jì)劃;查詢執(zhí)行單元,被配置為通過根據(jù)由查詢編譯單元?jiǎng)?chuàng)建的掃描計(jì)劃訪問磁盤表格空間或內(nèi)存表格空間讀取表格的數(shù)據(jù)并且使用讀取的數(shù)據(jù)執(zhí)行查詢語句的處理。
[0020]此外,查詢執(zhí)行單元可被配置為當(dāng)檢查出表格存儲(chǔ)在磁盤表格空間中時(shí)以數(shù)據(jù)塊的形式讀取表格中的行;并且當(dāng)檢查出表格存儲(chǔ)在內(nèi)存表格空間時(shí)通過內(nèi)存頁面(memorypage)讀取表格中的行。
[0021]此外,查詢執(zhí)行單元可被配置為在執(zhí)行表格的掃描計(jì)劃的過程中將從磁盤表格空間和內(nèi)存表格空間中讀取的行的存儲(chǔ)結(jié)構(gòu)適配(fit)成相同格式的行。
[0022]此外,查詢編譯單元可被配置為:當(dāng)表格是非分區(qū)表格時(shí),檢查表格是存儲(chǔ)在磁盤表格空間中還是內(nèi)存表格空間中;當(dāng)檢查出表格存儲(chǔ)在磁盤表格空間中時(shí)創(chuàng)建針對(duì)磁盤表格全掃描的掃描計(jì)劃;并且當(dāng)檢查出表格存儲(chǔ)在內(nèi)存表格空間中時(shí)創(chuàng)建針對(duì)內(nèi)存表格全掃描的掃描計(jì)劃。
[0023]此外,查詢編譯單元可被配置為:當(dāng)創(chuàng)建針對(duì)磁盤表格全掃描的掃描計(jì)劃時(shí),檢查是否存在表格的索引;當(dāng)檢查出存在表格的索引時(shí)創(chuàng)建針對(duì)磁盤索引掃描的掃描計(jì)劃;并且通過比較磁盤表格全掃描計(jì)劃和磁盤索引掃描計(jì)劃之間的成本選擇二者之一。
[0024]此外,查詢編譯單元可被配置為:當(dāng)創(chuàng)建針對(duì)內(nèi)存表格全掃描的掃描計(jì)劃時(shí),檢查是否存在表格的索引;當(dāng)檢查出存在表格的索引時(shí)創(chuàng)建針對(duì)內(nèi)存索引掃描的掃描計(jì)劃;并且通過比較內(nèi)存表格全掃描計(jì)劃和內(nèi)存索引掃描計(jì)劃之間的成本選擇二者之一。
[0025]此外,查詢編譯單元可被配置為:當(dāng)表格是分區(qū)表格時(shí),檢查分區(qū)表格是存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的混合存儲(chǔ)器中還是分區(qū)表格存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的一個(gè)中;并且當(dāng)檢查出分區(qū)表格存儲(chǔ)在混合存儲(chǔ)器中時(shí)創(chuàng)建針對(duì)混合全表格掃描的掃描計(jì)劃。
[0026]此外,查詢編譯單元可被配置為:當(dāng)創(chuàng)建針對(duì)混合全表格掃描的掃描計(jì)劃時(shí),檢查是否存在表格的索引;當(dāng)檢查出存在表格的索引時(shí)創(chuàng)建針對(duì)混合索引掃描的掃描計(jì)劃;并且通過比較混合全表格掃描計(jì)劃和混合索引掃描計(jì)劃之間的成本選擇二者之一。
[0027]此外,查詢編譯單元可被配置為根據(jù)存儲(chǔ)表格的存儲(chǔ)器(storage)通過計(jì)算讀取表格所需要的成本創(chuàng)建使處理查詢語句所需要的成本最小化的掃描計(jì)劃。
[0028]此外,表格可被劃分為多個(gè)分區(qū)并且存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的一個(gè)中;或者分區(qū)表格可根據(jù)分區(qū)表格中的分區(qū)鍵值(partit1n key value)的重要性存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的混合存儲(chǔ)器中。
[0029]此外,每個(gè)分區(qū)表格可根據(jù)分區(qū)表格中的具有時(shí)間信息的分區(qū)鍵值隨著時(shí)間的推移依次從內(nèi)存表格空間轉(zhuǎn)移到磁盤表格空間。
[0030]根據(jù)本發(fā)明的另一方面,提供了一種用于處理包含內(nèi)存表格空間和磁盤表格空間的混合存儲(chǔ)器的數(shù)據(jù)庫系統(tǒng)中的查詢的方法,該方法包括:接收數(shù)據(jù)庫系統(tǒng)中的查詢語句;在接收到查詢語句時(shí),通過參考有關(guān)存儲(chǔ)表格的存儲(chǔ)的信息檢查處理查詢語句所需要的表格存儲(chǔ)在哪個(gè)存儲(chǔ)中;按照存儲(chǔ)表格的存儲(chǔ)創(chuàng)建表格的掃描計(jì)劃;根據(jù)表格的掃描計(jì)劃通過掃描磁盤表格空間或內(nèi)存表格空間來讀取表格的數(shù)據(jù);以及使用讀取的數(shù)據(jù)執(zhí)行查詢語句的處理。
[0031]此外,讀取表格的數(shù)據(jù)可包括:當(dāng)檢查出表格存儲(chǔ)在磁盤表格空間中時(shí)以數(shù)據(jù)塊的形式讀取表格中的行;并且當(dāng)檢查出表格存儲(chǔ)在內(nèi)存表格空間中時(shí)通過內(nèi)存頁面讀取表格中的行。
[0032]此外,創(chuàng)建表格的掃描計(jì)劃可包括:當(dāng)表格是非分區(qū)表格時(shí),檢查表格是存儲(chǔ)在磁盤表格空間中還是內(nèi)存表格空間中;當(dāng)檢查出表格存儲(chǔ)在磁盤表格空間中時(shí)創(chuàng)建針對(duì)磁盤表格全掃描的掃描計(jì)劃;并且當(dāng)檢查出表格存儲(chǔ)在內(nèi)存表格空間中時(shí)創(chuàng)建針對(duì)內(nèi)存表格全掃描的掃描計(jì)劃。
[0033]此外,創(chuàng)建針對(duì)磁盤表格全掃描的掃描計(jì)劃可包括:檢查是否存在表格的索引;當(dāng)檢查出存在表格的索引時(shí)創(chuàng)建針對(duì)磁盤索引掃描的掃描計(jì)劃;并且通過比較磁盤表格全掃描計(jì)劃和磁盤索引掃描計(jì)劃之間的成本選擇二者之一。
[0034]此外,創(chuàng)建針對(duì)內(nèi)存表格全掃描的掃描計(jì)劃可包括:檢查是否存在表格的索引;當(dāng)檢查出存在表格的索引時(shí)創(chuàng)建針對(duì)內(nèi)存索引掃描的掃描計(jì)劃;并且通過比較內(nèi)存表格全掃描計(jì)劃和內(nèi)存索引掃描計(jì)劃之間的成本選擇二者之一。
[0035]此外,創(chuàng)建表格的掃描計(jì)劃可包括:當(dāng)表格是分區(qū)表格時(shí),檢查分區(qū)表格是存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的混合存儲(chǔ)器中還是分區(qū)表格存儲(chǔ)在磁盤表格空間和內(nèi)存表格空間的一個(gè)中;并且當(dāng)檢查出分區(qū)表格存儲(chǔ)在混合存儲(chǔ)器中時(shí)創(chuàng)建針對(duì)混合全掃描的掃描計(jì)劃。
當(dāng)前第1頁
1 
2 
3 
4