[發(fā)明專利]一種大量數(shù)據(jù)庫查詢在應(yīng)用層的攔截方法和系統(tǒng)在審
| 申請?zhí)枺?/td> | 202310111300.6 | 申請日: | 2023-02-14 |
| 公開(公告)號: | CN116340400A | 公開(公告)日: | 2023-06-27 |
| 發(fā)明(設(shè)計(jì))人: | 許友正;鄭保順;劉正偉;胡豪杰;伍曉軍;李中輝;黃文質(zhì) | 申請(專利權(quán))人: | 智業(yè)互聯(lián)(廈門)健康科技有限公司 |
| 主分類號: | G06F16/25 | 分類號: | G06F16/25;G06F16/28;G06F16/2455 |
| 代理公司: | 廈門福貝知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 35235 | 代理人: | 郭涵煒 |
| 地址: | 361000 福建省廈門市翔*** | 國省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 大量 數(shù)據(jù)庫 查詢 應(yīng)用 攔截 方法 系統(tǒng) | ||
本發(fā)明公開了一種大量數(shù)據(jù)庫查詢在應(yīng)用層的攔截方法和系統(tǒng),包括獲取歷史采集信息,記錄驅(qū)動(dòng)層查詢結(jié)果數(shù)與應(yīng)用實(shí)際占用內(nèi)存的增量關(guān)系,作為樣本集通過梯度提升樹進(jìn)行訓(xùn)練,獲得內(nèi)存增量模型;在mysql的驅(qū)動(dòng)層流式讀取本次查詢的數(shù)據(jù)包信息,利用所述內(nèi)存增量模型預(yù)估內(nèi)存增量;響應(yīng)于所述預(yù)估內(nèi)存增量超出限定閾值,終止本次查詢。本發(fā)明可以提前發(fā)現(xiàn)大查詢并阻止進(jìn)一步讀取導(dǎo)致應(yīng)用oom,有效保障應(yīng)用的線上運(yùn)行,并且對應(yīng)用的入侵性非常小。
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)攔截處理的技術(shù)領(lǐng)域,尤其是一種大量數(shù)據(jù)庫查詢在應(yīng)用層的攔截方法和系統(tǒng)。
背景技術(shù)
java應(yīng)用查詢mysql的流程:數(shù)據(jù)通過網(wǎng)卡到達(dá)mysql驅(qū)動(dòng),再到j(luò)dbc,再到框架層,最后包裝成業(yè)務(wù)對象.如果單次查詢返回量大,極易導(dǎo)致fullgc、卡死或內(nèi)存溢出。目前業(yè)界的解決方法主要有以下幾種:
(1)從代碼入手,嚴(yán)格控制sql語句;
(1)流式查詢,即設(shè)置fetch?size來分頁查詢;
(2)游標(biāo)查詢,即在連接中設(shè)置useCursorFetch=true。
上述方法存在以下相應(yīng)的缺點(diǎn):
(1)從代碼入手,嚴(yán)格控制sql語句:這種簡單暴力,但是無法做到事無巨細(xì),由于業(yè)務(wù)的發(fā)展、開發(fā)人員的質(zhì)量不齊、管理不到位等原因,總是會有遺漏的大查詢在線上出現(xiàn)。
(2)流式查詢,即設(shè)置fetch?size來分頁查詢:這種可以實(shí)質(zhì)上防止oom,但是要求所有請求都打上這個(gè)標(biāo)志,且應(yīng)該詳細(xì)梳理所有業(yè)務(wù),工作量巨大,不適合在現(xiàn)有系統(tǒng)實(shí)施。
(3)游標(biāo)查詢,即設(shè)置useCursorFetch=true:mysql服務(wù)端不清楚客戶端什么時(shí)候?qū)?shù)據(jù)讀完,其自身對應(yīng)表也可能有DML操作,所以它要建立一個(gè)臨時(shí)表來存放數(shù)據(jù),這會導(dǎo)致mysql服務(wù)端出現(xiàn)如下性能上的問題:IOPS(Input/Output?Per?Second)飆升、磁盤空間飆升、客戶端JDBC發(fā)起SQL后,長時(shí)間等待SQL響應(yīng)數(shù)據(jù),這段時(shí)間就是服務(wù)端在準(zhǔn)備數(shù)據(jù)、在數(shù)據(jù)準(zhǔn)備完成后,開始傳輸數(shù)據(jù)的階段,網(wǎng)絡(luò)響應(yīng)開始飆升,IOPS由“讀寫”轉(zhuǎn)變?yōu)椤白x取”、CPU和內(nèi)存會有一定比例的上升。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中存在的上述技術(shù)問題,本發(fā)明提出了一種大量數(shù)據(jù)庫查詢在應(yīng)用層的攔截方法和系統(tǒng),以解決上述技術(shù)問題。
根據(jù)本申請的一個(gè)方面,提出了一種大量數(shù)據(jù)庫查詢在應(yīng)用層的攔截方法,包括:
S1:獲取歷史采集信息,記錄驅(qū)動(dòng)層查詢結(jié)果數(shù)與應(yīng)用實(shí)際占用內(nèi)存的增量關(guān)系,作為樣本集通過梯度提升樹進(jìn)行訓(xùn)練,獲得內(nèi)存增量模型;
S2:在mysql的驅(qū)動(dòng)層流式讀取本次查詢的數(shù)據(jù)包信息,利用內(nèi)存增量模型預(yù)估內(nèi)存增量;
S3:響應(yīng)于預(yù)估內(nèi)存增量超出限定閾值,終止本次查詢。
在一些具體的實(shí)施例中,S1之前還包括分析mysql協(xié)議,獲取本次查詢返回的字段數(shù)、字段的屬性、記錄包和結(jié)束包。
在一些具體的實(shí)施例中,內(nèi)存增量模型根據(jù)記錄字段與條數(shù)返回內(nèi)存增量。
在一些具體的實(shí)施例中,S3中調(diào)用驅(qū)動(dòng)層的com.mysql.cj.core.io.ReadAheadInputStream.read進(jìn)行流式讀取。
在一些具體的實(shí)施例中,S3具體包括流式讀取本次查詢到的數(shù)據(jù)包總大小,解析數(shù)據(jù)包,轉(zhuǎn)化為記錄對象,上層應(yīng)用記錄對象進(jìn)行內(nèi)存增量預(yù)估。
在一些具體的實(shí)施例中,S4具體包括響應(yīng)于數(shù)據(jù)包的大小超過預(yù)設(shè)的閾值,或預(yù)估內(nèi)存增量超出限定閾值,終止本次查詢,釋放相應(yīng)內(nèi)存和句柄,并向上層應(yīng)用拋出異常。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于智業(yè)互聯(lián)(廈門)健康科技有限公司,未經(jīng)智業(yè)互聯(lián)(廈門)健康科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310111300.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲方法、裝置、電子設(shè)備及存儲介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置
- 在線應(yīng)用平臺上應(yīng)用間通信的回調(diào)應(yīng)答方法、應(yīng)用及在線應(yīng)用平臺
- 應(yīng)用使用方法、應(yīng)用使用裝置及相應(yīng)的應(yīng)用終端
- 應(yīng)用管理設(shè)備、應(yīng)用管理系統(tǒng)、以及應(yīng)用管理方法
- 能力應(yīng)用系統(tǒng)及其能力應(yīng)用方法
- 應(yīng)用市場的應(yīng)用搜索方法、系統(tǒng)及應(yīng)用市場
- 使用應(yīng)用的方法和應(yīng)用平臺
- 應(yīng)用安裝方法和應(yīng)用安裝系統(tǒng)
- 使用遠(yuǎn)程應(yīng)用進(jìn)行應(yīng)用安裝
- 應(yīng)用檢測方法及應(yīng)用檢測裝置
- 應(yīng)用調(diào)用方法、應(yīng)用發(fā)布方法及應(yīng)用發(fā)布系統(tǒng)





