[發明專利]一種利用緩存表來提高數據庫數據插入性能的方法有效
| 申請號: | 201110450124.6 | 申請日: | 2011-12-29 |
| 公開(公告)號: | CN102542054B | 公開(公告)日: | 2017-02-08 |
| 發明(設計)人: | 傅建記;余建成;吳曉前;詹友陸 | 申請(專利權)人: | 廈門雅迅網絡股份有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 廈門市新華專利商標代理有限公司35203 | 代理人: | 朱凌 |
| 地址: | 361009 福建*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 利用 緩存 提高 數據庫 數據 插入 性能 方法 | ||
技術領域
本發明涉及一種利用緩存表來提高數據庫數據插入性能的方法。
技術背景
大型業務應用系統,一般都要將系統相關業務數據存儲到數據庫之中。在系統實際運行過程中,將同類型的新增業務數據寫入到數據庫對應的數據表中,數據表的數據存儲在服務器的硬盤,硬盤的寫入性能影響了數據表的插入性能,當前硬盤的讀寫性能是服務器各組件中最低的一部分,硬盤的讀寫性能成為數據庫數據表的插入性能的瓶頸。為了提高數據庫的插入效率,現有采用的技術方案有:升級服務器硬件或者批量插入。
通過升級服務器硬件(主要是硬盤)的方法,可以較簡單地實現數據庫插入性能的提升,但是提升范圍有限,且硬件開銷比較大,綜合性價比不高。
批量插入是一種將多條待插入數據拼接成一條語句然后一次提交到數據庫執行的方法,可以不用升級硬件就獲取到較大的性能提升,但在系統新增業務數據量巨大,業務系統對該表讀取頻繁的情況下容易造成數據表被鎖住,從而引發頻繁、階段性的性能下降,不利于系統的穩定。
發明內容
針對現有技術方案的不足,本發明提出一種利用緩存表來提高數據庫插入性能的方法,可以在不用升級硬件、避免造成數據庫死鎖的條件下大大提高數據庫的插入性能。
本發明一種利用緩存表來提高數據庫數據插入性能的方法,首先建立兩個基于內存的數據庫緩存表,該緩存表與待最終插入的目的數據表的表結構相同;先將數據插入到第一緩存表中,待第一緩存表中的數據超過最大個數閾值后,再將第一緩存表的數據批量導入到目的數據表,在導入過程中,若有新的數據要插入數據庫,則將新的數據插入到第二緩存表中,待第二緩存表中的數據超過最大個數閾值后,再將該第二緩存表中的數據導入到目的數據表中,該第一或第二緩存表一旦將其中的數據導入至目的數據表中后,則所述的第一或第二緩存表立即清空;上述往第一或第二緩存表插入數據到最大個數閾值所需要的時間必須大于將該第一或第二緩存表中的數據導入到目的數據表所需時間。
采用本發明的技術方案后,由于緩存表是建立在內存之上,所以該表的插入性能取決于內存的寫入性能,遠遠大于基于硬盤的數據表,只要在保證緩存表的容量夠大的前提下,則就可以獲取到近似于緩存表的數據插入性能。
附圖說明
圖1為本發明的流程示意圖。
以下結合附圖和具體實施例對本發明作進一步詳述。
具體實施方式
本發明一種利用緩存表來提高數據庫數據插入性能的方法,首先建立兩個基于內存的數據庫緩存表,該緩存表與待最終插入的目的數據表的表結構相同,因為緩存表是建立在內存之上,所以該表的插入性能取決于內存的寫入性能,遠遠大于基于硬盤的數據表;先將數據插入到第一緩存表中,待第一緩存表中的數據超過最大個數閾值后,再將第一緩存表的數據批量導入到目的數據表,在導入過程中,若有新的數據要插入數據庫,則將新的數據插入到第二緩存表中,待第二緩存表中的數據超過最大個數閾值后,再將該第二緩存表中的數據導入到目的數據表中,該第一或第二緩存表一旦將其中的數據導入至目的數據表中后,則所述的第一或第二緩存表立即清空;上述往第一或第二緩存表插入數據到最大個數閾值所需要的時間必須大于將該第一或第二緩存表中的數據導入到目的數據表所需時間。
如圖1所示,本發明具體實現步驟如下:
步驟1、選用MYSQL作為數據庫引擎來部署數據庫,創建業務系統數據庫BizDB;
步驟2、在業務系統數據庫BizDB中創建以下數據表:
目的數據表,表引擎選擇MyIsam,表結構中定義若干數據字段;
建立基于內存的第一和第二數據庫緩存表,該緩存表的表結構與目的數據表相同;
步驟3、在業務系統數據庫BizDB中創建以下存儲過程:
存儲過程1:參數為第一緩存表中各字段,將各參數插入到第一緩存表中,然后返回第一緩存表的當前數據行數,如果插入失敗則返回0;
存儲過程2:參數為第二緩存表中各字段,將各參數插入到第二緩存表中,然后返回第二緩存表的當前數據行數,如果插入失敗則返回0;
存儲過程3:參數為整型,限制為1或2,返回值BOOL型,根據參數將對應的緩存表中的數據存入目的數據表中,存成功后將原緩存表清空,并返回操作結果;
步驟4、創建業務程序,設置緩存表最大行數限制閾值,根據預先配置好的參數連接業務系統數據庫BizDB,初始化當前緩存表標志位為1;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廈門雅迅網絡股份有限公司,未經廈門雅迅網絡股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110450124.6/2.html,轉載請聲明來源鉆瓜專利網。





