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

數(shù)據(jù)庫結(jié)果集緩存方法及設(shè)備與流程

文檔序號:12008928閱讀:201來源:國知局
數(shù)據(jù)庫結(jié)果集緩存方法及設(shè)備與流程
本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種數(shù)據(jù)庫結(jié)果集緩存方法及設(shè)備。

背景技術(shù):
目前,在數(shù)據(jù)庫實(shí)際應(yīng)用環(huán)境中,為了快速響應(yīng)用戶的查詢請求,常使用結(jié)果集緩存技術(shù),結(jié)果集緩存的原理是接收到相同的查詢請求時,利用之前的查詢結(jié)果響應(yīng)當(dāng)前的查詢請求,而不是直接對原始數(shù)據(jù)進(jìn)行處理。結(jié)果集緩存技術(shù)使數(shù)據(jù)庫的查詢性能有很大的提升,可以有更少的物理讀寫和更快的響應(yīng)時間。結(jié)果集緩存主要用于存儲數(shù)據(jù)表連接、聚集或排序等耗時操作的結(jié)果,以快速得到結(jié)果?,F(xiàn)有技術(shù)中,是根據(jù)結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,簡稱:SQL)查詢語句來做結(jié)果集緩存的,如果一個SQL查詢語句是以select開始的,則數(shù)據(jù)庫服務(wù)器將把與該SQL文本的散列鍵值對應(yīng)的查詢結(jié)果緩存在緩存區(qū)中,每個緩存區(qū)都與一個SQL文本的散列鍵值對應(yīng),在應(yīng)用結(jié)果集緩存之前,數(shù)據(jù)庫服務(wù)器不會對SQL文本做任何處理,也就是說,若兩個SQL查詢語句只相差一個字符,這兩個SQL查詢語句也將使用緩存的不同結(jié)果集。然而,實(shí)際應(yīng)用中,對原始的數(shù)據(jù)表進(jìn)行更新有時是不可避免的,若原始的數(shù)據(jù)表發(fā)生了更新,會導(dǎo)致之前緩存的結(jié)果集不可用,當(dāng)接收到相同的查詢請求時,需要耗費(fèi)中央處理器(CentralProcessingUnit,簡稱:CPU)重新執(zhí)行整個查詢過程,以生成新的結(jié)果集。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫結(jié)果集緩存方法及設(shè)備,以避免在原始數(shù)據(jù)表發(fā)生改變時,需要重新執(zhí)行整個執(zhí)行計(jì)劃,節(jié)省了查詢時間。第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫結(jié)果集緩存方法,包括:數(shù)據(jù)庫引擎接收數(shù)據(jù)操縱語言DML語句,所述DML語句用于使所述數(shù)據(jù)庫引擎對原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,包括:所述數(shù)據(jù)庫引擎立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時,所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)庫引擎接收數(shù)據(jù)操縱語言DML語句之前,還包括:對所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中。根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢語言SQL查詢語句。第二方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)庫引擎,包括:接收模塊,用于接收數(shù)據(jù)操縱語言DML語句,所述DML語句用于使所述數(shù)據(jù)庫引擎對原始數(shù)據(jù)表進(jìn)行DML操作;處理模塊,用于執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述處理模塊具體用于:立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時,喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述處理模塊還用于:對所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中。根據(jù)第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢語言SQL查詢語句。本發(fā)明實(shí)施例提供的數(shù)據(jù)庫結(jié)果集緩存方法及設(shè)備,通過數(shù)據(jù)庫引擎接收DML語句,對原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。從而在原始數(shù)據(jù)表發(fā)生改變時,可以不用重新執(zhí)行整個執(zhí)行計(jì)劃,而是在中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,節(jié)省了查詢時間。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法實(shí)施例一的流程圖;圖2為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法實(shí)施例二的流程圖;圖3為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法中客戶端的執(zhí)行計(jì)劃的示意圖;圖4為本發(fā)明數(shù)據(jù)庫引擎實(shí)施例一的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法實(shí)施例一的流程圖。如圖1所示,本實(shí)施例提供的方法可以包括:S101、數(shù)據(jù)庫引擎接收數(shù)據(jù)操縱語言(DataManipulationLanguage,簡稱:DML)語句,所述DML語句用于使所述數(shù)據(jù)庫引擎對原始數(shù)據(jù)表進(jìn)行DML操作。DML語句具體可以用于對原始數(shù)據(jù)表進(jìn)行更新、插入或刪除操作,本實(shí)施例以對原始數(shù)據(jù)表插入一條新記錄為例進(jìn)行說明。數(shù)據(jù)庫引擎在接收到DML語句時,會根據(jù)DML語句對原始數(shù)據(jù)表進(jìn)行插入操作。S102、所述數(shù)據(jù)庫引擎執(zhí)行所述DML操作,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中??梢岳斫獾氖?,若判斷獲知緩存區(qū)中沒有存儲之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,可以不執(zhí)行操作。在實(shí)際應(yīng)用過程中,所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃可以包括兩種方式:第一種方式為所述數(shù)據(jù)庫引擎立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;第二種方式為在滿足預(yù)設(shè)的觸發(fā)條件時,所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。本實(shí)施例不對此進(jìn)行限制。本實(shí)施例提供的數(shù)據(jù)庫結(jié)果集緩存方法,通過數(shù)據(jù)庫引擎接收DML語句,對原始數(shù)據(jù)表進(jìn)行DML操作;所述數(shù)據(jù)庫引擎執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則所述數(shù)據(jù)庫引擎喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。從而在原始數(shù)據(jù)表發(fā)生改變時,可以不用重新執(zhí)行整個執(zhí)行計(jì)劃,而是在中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,節(jié)省了查詢時間。圖2為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法實(shí)施例二的流程圖。如圖2所示,在上述實(shí)施例的基礎(chǔ)上,在S101之前,本實(shí)施例提供的方法還可以包括:S201、對所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中。具體地,所述執(zhí)行計(jì)劃可以包括所述SQL查詢語句。在本實(shí)施例中,所述執(zhí)行計(jì)劃可以包括兩種工作狀態(tài),運(yùn)行狀態(tài)和睡眠狀態(tài),數(shù)據(jù)庫引擎在執(zhí)行完所述執(zhí)行計(jì)劃后,會將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),而不是直接結(jié)束所述執(zhí)行計(jì)劃,同時由于在緩存區(qū)中存儲了中間執(zhí)行結(jié)果和第一最終執(zhí)行結(jié)果,因此,若原始數(shù)據(jù)表發(fā)生改變,數(shù)據(jù)庫引擎可以喚醒之前設(shè)置為所述睡眠狀態(tài)的所述執(zhí)行計(jì)劃,即,使所述執(zhí)行計(jì)劃處于運(yùn)行狀態(tài),并在所述中間執(zhí)行結(jié)果以及改變后的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與改變后的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。本實(shí)施例提供的數(shù)據(jù)庫結(jié)果集緩存方法,通過在第一次執(zhí)行所述執(zhí)行計(jì)劃時,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中,使得后續(xù)若原始數(shù)據(jù)表發(fā)生改變,所述數(shù)據(jù)庫引擎可以喚醒所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果及改變后的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,并將得到的第二最終執(zhí)行結(jié)果存儲在所述緩存區(qū)中,在用戶再次發(fā)起相同的執(zhí)行計(jì)劃時,可以直接從緩存區(qū)中獲取最終結(jié)果,而不用重新執(zhí)行整個執(zhí)行計(jì)劃,節(jié)省了查詢時間。下面以一個具體的實(shí)施例對數(shù)據(jù)庫結(jié)果集緩存方法進(jìn)行詳細(xì)說明。圖3為本發(fā)明數(shù)據(jù)庫結(jié)果集緩存方法中客戶端的執(zhí)行計(jì)劃的示意圖。如圖3所示,在本實(shí)施例中,假設(shè)執(zhí)行計(jì)劃為對索引掃描(customer)表和全表掃描(sales)表進(jìn)行哈希連接(HashJoin)。本領(lǐng)域技術(shù)人員可知,HashJoin包括buildhash和hashjoin兩個步驟,其中,buildhash是針對customer表進(jìn)行的操作,而hashjoin是對customer表和sales表進(jìn)行的操作。buildhash的結(jié)果即為本實(shí)施例中所述的中間執(zhí)行結(jié)果,hashjoin的結(jié)果即為本實(shí)施例中所述的第一最終執(zhí)行結(jié)果,圖3中的結(jié)果集即為本實(shí)施例中所述的第一最終執(zhí)行結(jié)果或第二最終執(zhí)行結(jié)果。假設(shè)客戶端A第一次發(fā)起SQL查詢語句,數(shù)據(jù)庫引擎在接收到SQL查詢語句后,分析SQL語句文本,檢查緩存區(qū)中是否存在與該SQL語句文本的散列鍵值對應(yīng)的第一最終執(zhí)行結(jié)果,若存在,則數(shù)據(jù)庫引擎從緩存區(qū)中取出該第一最終執(zhí)行結(jié)果并返回給客戶端A;若不存在,則數(shù)據(jù)庫引擎執(zhí)行與所述SQL查詢語句對應(yīng)的執(zhí)行計(jì)劃,獲得所述執(zhí)行計(jì)劃的中間執(zhí)行結(jié)果和第一最終執(zhí)行結(jié)果,并將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中,向客戶端A返回第一最終執(zhí)行結(jié)果。若客戶端B向sales表中插入了一條記錄,數(shù)據(jù)庫引擎執(zhí)行完插入操作后,會判斷緩存區(qū)中是否存在所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,若存在,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,將該記錄上推至HashJoin的節(jié)點(diǎn)做hashjoin操作,而不需要重新進(jìn)行buildhash,也就是說,由于customer表沒有改變,即,buildhash的結(jié)果沒有改變,而由于對sales表進(jìn)行了插入操作,因此,只需要對customer表和sales表再次執(zhí)行hashjoin操作,以得到與插入了一條記錄的sales表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。若客戶端A再次發(fā)起了相同的SQL查詢語句,則數(shù)據(jù)庫引擎可以直接從緩存區(qū)中獲取所述第二最終執(zhí)行結(jié)果返回給客戶端A。本實(shí)施例提供的方法,通過在原始數(shù)據(jù)表發(fā)生變化后,數(shù)據(jù)庫引擎判斷緩存區(qū)中是否存在相應(yīng)的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,若存在,則在所述中間執(zhí)行結(jié)果的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到第二最終執(zhí)行結(jié)果,在客戶端第二次發(fā)起相同的SQL查詢語句時,可以直接從緩存區(qū)中獲取所述第二最終執(zhí)行結(jié)果返回給客戶端,節(jié)省了查詢時間。圖4為本發(fā)明數(shù)據(jù)庫引擎實(shí)施例一的結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例提供的數(shù)據(jù)庫引擎可以包括:接收模塊11,用于接收數(shù)據(jù)操縱語言DML語句,所述DML語句用于使所述數(shù)據(jù)庫引擎對原始數(shù)據(jù)表進(jìn)行DML操作;處理模塊12,用于執(zhí)行所述DML操作后,若判斷獲知緩存區(qū)中存儲有之前對所述原始數(shù)據(jù)表執(zhí)行一執(zhí)行計(jì)劃而獲得的第一最終執(zhí)行結(jié)果以及中間執(zhí)行結(jié)果,則喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃,并在所述中間執(zhí)行結(jié)果以及經(jīng)過DML操作的原始數(shù)據(jù)表的基礎(chǔ)上再次執(zhí)行所述執(zhí)行計(jì)劃,以得到與經(jīng)過DML操作的原始數(shù)據(jù)表對應(yīng)的第二最終執(zhí)行結(jié)果并存儲在所述緩存區(qū)中。其中,所述處理模塊12具體可以用于立即喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃;或,在滿足預(yù)設(shè)的觸發(fā)條件時,喚醒被設(shè)置為睡眠狀態(tài)的所述執(zhí)行計(jì)劃。所述處理模塊12還可以用于對所述原始數(shù)據(jù)表執(zhí)行所述執(zhí)行計(jì)劃,獲得所述第一最終執(zhí)行結(jié)果以及所述中間執(zhí)行結(jié)果,將所述執(zhí)行計(jì)劃的工作狀態(tài)設(shè)置為睡眠狀態(tài),并存儲在所述緩存區(qū)中。所述執(zhí)行計(jì)劃包括結(jié)構(gòu)化查詢語言SQL查詢語句。本實(shí)施例提供的數(shù)據(jù)庫引擎,可用于執(zhí)行上述方法實(shí)施例的技術(shù)方案,其原理及技術(shù)效果類似,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1