亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于Presto的SQL查詢方法及系統(tǒng)的制作方法

文檔序號(hào):9667416閱讀:752來(lái)源:國(guó)知局
一種用于Presto的SQL查詢方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于交互式SQL查詢領(lǐng)域,尤其涉及一種用于Presto的SQL查詢方法及系統(tǒng)。
【背景技術(shù)】
[0002]Presto是一種純內(nèi)存的交互式SQL查詢引擎,查詢效率比Hive (基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,提供簡(jiǎn)單的SQL查詢功能)高出近10倍,能夠跨越包括Hive、MySQL,Kafka在內(nèi)的多種數(shù)據(jù)源進(jìn)行查詢,目前已成功應(yīng)用在Facebook、Netflix、Dropbox、京東等知名互聯(lián)網(wǎng)公司。
[0003]對(duì)于提交給Presto執(zhí)行的SQL,Presto首先會(huì)對(duì)SQL進(jìn)行解析并生成執(zhí)行計(jì)劃,然后再依據(jù)執(zhí)行計(jì)劃分配計(jì)算任務(wù)并執(zhí)行,如圖1所示。
[0004]在Presto使用過(guò)程中有時(shí)會(huì)遇到如下的問(wèn)題:
[0005]1、SQL會(huì)頻繁地執(zhí)行;
[0006]2、執(zhí)行時(shí)間較長(zhǎng)但查詢結(jié)果較??;
[0007]3、查詢結(jié)果的實(shí)時(shí)性不高。
[0008]針對(duì)以上問(wèn)題,目前Presto的解決方案為,針對(duì)每一個(gè)提交的SQL,分別生成執(zhí)行計(jì)劃,然后分配計(jì)算任務(wù)并執(zhí)行。然而,由于每一個(gè)SQL執(zhí)行的時(shí)間較長(zhǎng),對(duì)Presto計(jì)算的壓力較大,對(duì)內(nèi)存和CPU的消耗也較大,甚至可能導(dǎo)致內(nèi)存溢出進(jìn)而導(dǎo)致SQL執(zhí)行失敗。
[0009]緩存查詢結(jié)果,加快查詢速度并緩解Presto壓力的方法。該方法針對(duì)實(shí)時(shí)性要求不高的SQL,能夠緩存其查詢結(jié)果,在一段時(shí)間內(nèi)執(zhí)行同樣的SQL時(shí),將不再執(zhí)行Presto計(jì)算而是直接返回之前緩存的查詢結(jié)果。該方法無(wú)需進(jìn)行復(fù)雜的計(jì)算,能夠有效減輕Presto的壓力,對(duì)內(nèi)存和CPU的消耗也不大。

【發(fā)明內(nèi)容】

[0010](一)要解決的技術(shù)問(wèn)題
[0011]本發(fā)明的目的在于,提供一種用于Presto的SQL查詢方法及系統(tǒng),能夠?yàn)镾QL查詢緩存其查詢結(jié)果,并在一定時(shí)間內(nèi)再次執(zhí)行同樣的SQL查詢時(shí)直接返回緩存的查詢結(jié)果,提高SQL查詢的效率,減少Presto的計(jì)算量,減少內(nèi)存和CPU的消耗。
[0012](二)技術(shù)方案
[0013]本發(fā)明提供一種用于Presto的SQL查詢方法,包括:
[0014]S1,配置數(shù)據(jù)庫(kù)中需緩存的查詢結(jié)果所在的表;
[0015]S2,接收SQL查詢命令,并根據(jù)該SQL查詢命令生成執(zhí)行計(jì)劃,判斷該執(zhí)行計(jì)劃需查詢的表是否為數(shù)據(jù)庫(kù)中所配置的表,若是,則為該執(zhí)行計(jì)劃生成唯一標(biāo)識(shí);
[0016]S3,根據(jù)執(zhí)行計(jì)劃的唯一標(biāo)識(shí),查詢緩存在分布式文件系統(tǒng)中的緩存表,并從該緩存表中得到查詢結(jié)果。
[0017]本發(fā)明還提供一種用于Presto的SQL查詢系統(tǒng),包括:
[0018]配置模塊,用于配置數(shù)據(jù)庫(kù)中需緩存的查詢結(jié)果所在的表;
[0019]標(biāo)識(shí)生成模塊,用于接收SQL查詢命令,并根據(jù)該SQL查詢命令生成執(zhí)行計(jì)劃,判斷該執(zhí)行計(jì)劃需查詢的表是否為數(shù)據(jù)庫(kù)中所配置的表,若是,則為該執(zhí)行計(jì)劃生成唯一標(biāo)識(shí);
[0020]查詢模塊,用于根據(jù)執(zhí)行計(jì)劃的唯一標(biāo)識(shí),查詢緩存在分布式文件系統(tǒng)中的緩存表,并從該緩存表中得到查詢結(jié)果。
[0021](三)有益效果
[0022]本發(fā)明通過(guò)緩存查詢結(jié)果,在一段時(shí)間內(nèi)執(zhí)行同樣的SQL查詢時(shí),將不再執(zhí)行Presto計(jì)算而是直接返回之前緩存的查詢結(jié)果,加快查詢速度,并緩解Presto壓力,同時(shí),也減少了對(duì)內(nèi)存和CPU的消耗。
【附圖說(shuō)明】
[0023]圖1是本發(fā)明實(shí)施例提供的用于Presto的SQL查詢方法的流程圖。
[0024]圖2是本發(fā)明實(shí)施例提供的緩存表過(guò)期檢查的流程圖。
【具體實(shí)施方式】
[0025]本發(fā)明提供一種用于Presto的SQL查詢方法及系統(tǒng),方法首先配置數(shù)據(jù)庫(kù)中需緩存的查詢結(jié)果所在的表,然后根據(jù)SQL查詢命令生成執(zhí)行計(jì)劃,并為該執(zhí)行計(jì)劃生成唯一標(biāo)識(shí),最后根據(jù)執(zhí)行計(jì)劃的唯一標(biāo)識(shí),查詢緩存在分布式文件系統(tǒng)中的緩存表,并從該緩存表中得到查詢結(jié)果。本發(fā)明在一段時(shí)間內(nèi)執(zhí)行同樣的SQL查詢時(shí),將不再執(zhí)行Presto計(jì)算而是直接返回之前緩存的查詢結(jié)果,加快查詢速度,并緩解Presto壓力,同時(shí),也減少了對(duì)內(nèi)存和CPU的消耗。
[0026]根據(jù)本發(fā)明的一種實(shí)施方式,用于Presto的SQL查詢方法包括:
[0027]S1,配置數(shù)據(jù)庫(kù)中需緩存的查詢結(jié)果所在的表;其中,表是數(shù)據(jù)在數(shù)據(jù)庫(kù)中存儲(chǔ)的載體,針對(duì)經(jīng)常被查詢的數(shù)據(jù),可將其所在的表設(shè)定一個(gè)標(biāo)簽或添加一行數(shù)據(jù),以表示該表需要被緩存。
[0028]S2,接收SQL查詢命令,并根據(jù)該SQL查詢命令生成執(zhí)行計(jì)劃,判斷該執(zhí)行計(jì)劃需查詢的表是否為數(shù)據(jù)庫(kù)中所配置的表,若是,則為該執(zhí)行計(jì)劃生成唯一標(biāo)識(shí);其中,執(zhí)行計(jì)劃需要查詢的表可能是一個(gè)表,也可能是多個(gè)表,只要有一個(gè)表是數(shù)據(jù)庫(kù)中所配置的表,就為該執(zhí)行計(jì)劃生成唯一標(biāo)識(shí),該唯一標(biāo)識(shí)可以是所配置的表的表名。
[0029]S3,根據(jù)執(zhí)行計(jì)劃的唯一標(biāo)識(shí),查詢緩存在分布式文件系統(tǒng)中的緩存表,并從該緩存表中得到查詢結(jié)果。其中,分布式文件系統(tǒng)可以是Hadoop分布式文件系統(tǒng)(HDFS),HDFS具有可靠性,即使有少量節(jié)點(diǎn)宕機(jī),緩存表也不會(huì)丟失或遺漏數(shù)據(jù)。
[0030]根據(jù)本發(fā)明的一種實(shí)施方式,在步驟S3中,若唯一標(biāo)識(shí)在分布式文件系統(tǒng)中不存在對(duì)應(yīng)的緩存表,則根據(jù)執(zhí)行計(jì)劃在分布式文件系統(tǒng)中創(chuàng)建新的緩存表,并從新的緩存表中獲取查詢結(jié)果。其中,創(chuàng)建新的緩存表是指將數(shù)據(jù)庫(kù)中對(duì)應(yīng)的所配置的表存入分布式文件系統(tǒng)中。
[0031]根據(jù)本發(fā)明的一種實(shí)施方式,根據(jù)執(zhí)行計(jì)劃創(chuàng)建新的緩存表包括:根據(jù)執(zhí)行計(jì)劃將任務(wù)分配給至少一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)在數(shù)據(jù)庫(kù)中執(zhí)行任務(wù)以獲取查詢結(jié)果,根據(jù)該查詢結(jié)果創(chuàng)建新的緩存表,并將該新的緩存表與所述唯一標(biāo)識(shí)進(jìn)行關(guān)聯(lián)。
[0032]根據(jù)本發(fā)明的一種實(shí)施方式,在創(chuàng)建新的緩存表時(shí),配置該緩存表在分布式文件系統(tǒng)中的緩存時(shí)間,通過(guò)開啟一個(gè)后臺(tái)線程,針對(duì)每一張緩存表,周期性檢查其是否已經(jīng)過(guò)期,當(dāng)緩存表在分布式文件系統(tǒng)的存在時(shí)間大于所配置的緩存時(shí)間時(shí),則確定該緩存表已過(guò)期,并將該緩存表在從分布式文件系統(tǒng)中刪除。
[0033]根據(jù)本發(fā)明的一種實(shí)施方式,用于Presto的SQL查詢系統(tǒng)包括:
[0034]配置模塊,用于配置數(shù)據(jù)庫(kù)中需緩存的查詢結(jié)果所在的表;
[0035]標(biāo)識(shí)生成模塊,用于接收SQL查詢命令,并根據(jù)該SQL查詢命令生成執(zhí)行計(jì)劃,判斷該執(zhí)行計(jì)劃需查詢的表是否為數(shù)據(jù)庫(kù)中所配置的表,若是,則為該執(zhí)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1