[發明專利]一種大量數據庫查詢在應用層的攔截方法和系統在審
| 申請號: | 202310111300.6 | 申請日: | 2023-02-14 |
| 公開(公告)號: | CN116340400A | 公開(公告)日: | 2023-06-27 |
| 發明(設計)人: | 許友正;鄭保順;劉正偉;胡豪杰;伍曉軍;李中輝;黃文質 | 申請(專利權)人: | 智業互聯(廈門)健康科技有限公司 |
| 主分類號: | G06F16/25 | 分類號: | G06F16/25;G06F16/28;G06F16/2455 |
| 代理公司: | 廈門福貝知識產權代理事務所(普通合伙) 35235 | 代理人: | 郭涵煒 |
| 地址: | 361000 福建省廈門市翔*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 大量 數據庫 查詢 應用 攔截 方法 系統 | ||
1.一種大量數據庫查詢在應用層的攔截方法,其特征在于,包括:
S1:獲取歷史采集信息,記錄驅動層查詢結果數與應用實際占用內存的增量關系,作為樣本集通過梯度提升樹進行訓練,獲得內存增量模型;
S2:在mysql的驅動層流式讀取本次查詢的數據包信息,利用所述內存增量模型預估內存增量;
S3:響應于所述預估內存增量超出限定閾值,終止本次查詢。
2.根據權利要求1所述的大量數據庫查詢在應用層的攔截方法,其特征在于,所述S1之前還包括分析mysql協議,獲取本次查詢返回的字段數、字段的屬性、記錄包和結束包。
3.根據權利要求1所述的大量數據庫查詢在應用層的攔截方法,其特征在于,所述內存增量模型根據記錄字段與條數返回內存增量。
4.根據權利要求1所述的大量數據庫查詢在應用層的攔截方法,其特征在于,所述S3中調用所述驅動層的com.mysql.cj.core.io.ReadAheadInputStream.read進行流式讀取。
5.根據權利要求4所述的大量數據庫查詢在應用層的攔截方法,其特征在于,所述S3具體包括流式讀取本次查詢到的數據包總大小,解析所述數據包,轉化為記錄對象,上層應用所述記錄對象進行內存增量預估。
6.根據權利要求5所述的大量數據庫查詢在應用層的攔截方法,其特征在于,所述S4具體包括響應于所述數據包的大小超過預設的閾值,或所述預估內存增量超出限定閾值,終止本次查詢,釋放相應內存和句柄,并向上層應用拋出異常。
7.一種計算機可讀存儲介質,其上存儲有一或多個計算機程序,其特征在于,該一或多個計算機程序被計算機處理器執行時實施權利要求1至6任一項所述的方法。
8.一種大量數據庫查詢在應用層的攔截系統,其特征在于,所述系統包括:
內存增量模型構建單元,配置用于獲取歷史采集信息,記錄驅動層查詢結果數與應用實際占用內存的增量關系,作為樣本集通過梯度提升樹進行訓練,獲得內存增量模型;
內存增量預估單元,配置用于在mysql的驅動層流式讀取本次查詢的數據包信息,利用所述內存增量模型預估內存增量;
攔截單元:配置用于響應于所述預估內存增量超出限定閾值,終止本次查詢。
9.根據權利要求8所述的大量數據庫查詢在應用層的攔截系統,其特征在于,所述內存增量模型根據記錄字段與條數返回內存增量,所述內存增量預估單元中調用所述驅動層的com.mysql.cj.core.io.ReadAheadInputStream.read進行流式讀取,讀取本次查詢到的數據包總大小,解析所述數據包,轉化為記錄對象,上層應用所述記錄對象進行內存增量預估。
10.根據權利要求9所述的大量數據庫查詢在應用層的攔截系統,其特征在于,所述攔截單元具體配置用于響應于所述數據包的大小超過預設的閾值,或所述預估內存增量超出限定閾值,終止本次查詢,釋放相應內存和句柄,并向上層應用拋出異常。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于智業互聯(廈門)健康科技有限公司,未經智業互聯(廈門)健康科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310111300.6/1.html,轉載請聲明來源鉆瓜專利網。





