本公開實施例公開了一種數據庫訪問方法、裝置、電子設備及存儲介質,其中,數據庫訪問方法,包括:響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;執行所述第一SQL語句或所述第二語句訪問數據庫。解決多維度訪問數據庫大表時的性能問題,提高系統的響應速度和處理能力。
【技術實現步驟摘要】
數據庫訪問方法、裝置、電子設備及存儲介質
本公開屬于數據
,更具體地,涉及一種數據庫訪問方法、裝置、電子設備及存儲介質。
技術介紹
Oracle數據庫是一種非常適合處理高并發、大數據量、高負載的關系型數據庫。對于數據量很大的表(一般指超過4GB的表),Oracle提供了分區技術將數據量很大的表、索引拆分成若干個分區。通過Oracle優化器的SQL重寫,SQL訪問大表就被改寫成對數據量較小的分區的訪問,即提高了查詢的性能,又減少了熱點塊的沖突。通過這種分而治之的方式極大地提高了數據的查詢性能和數據庫的處理能力。Oracle支持的分區方式包括范圍分區、哈希分區、列表分區等。將大表分成小表后,邏輯上仍是一個表,對開發人員透明,同時又能提高系統的性能。Oracle的任何一個表只能按一種方式分區,每個表可以有多個索引。依據索引分區關鍵字與表的分區關鍵字異同,分區索引分為localpartitionindex和globalpartitionindex。當訪問表時分區裁剪的關鍵字與表的分區關鍵字不同時,為了提高訪問的效率,需要按照訪問表時的分區關鍵字創建相應的全局分區索引。由于通過索引訪問表時固有的開銷,當訪問表中數據量的占比稍大時,性能并不好,只是相對于全表掃描來說性能好。在OLTP系統中,業務高峰時并發高,通過索引訪問大表一個分區的大量數據時,問題尤其突出,往往在多個這樣SQL并發執行時,I/O的使用率就可能100%。
技術實現思路
有鑒于此,本公開實施例提供了一種數據庫訪問方法、裝置、電子設備及存儲介質,至少解決多維度訪問數據庫大表時的性能問題。第一方面,本公開實施例提供了一種數據庫訪問方法,包括:響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;執行所述第一SQL語句或所述第二語句訪問數據庫。可選的,所述查詢維度,包括業務組織、財務組織或管理組織。可選的,所述組織關系表為:存儲查詢維度之間關系的表。可選的,所述獲取查詢條件的步驟之間,包括:將數據量的表按照組織類型進行分區,所述組織類型包括業務組織、財務組織或管理組織;將分區后的表和及表的分區關鍵字存儲在分區關系表。可選的,所述獲取查詢條件為:在查詢頁面,錄入或選擇含查詢維度在內的查詢條件。第二方面,本公開實施例還提供了一種數據庫訪問裝置,包括:查詢條件獲取模塊:用于響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;字段獲取模塊:用于基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;判斷模塊:用于判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;第一SQL語句模塊:用于如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;第二SQL語句模塊:用于如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;執行模塊:用于執行所述第一SQL語句或所述第二語句訪問數據庫。可選的,所述查詢維度,包括業務組織、財務組織或管理組織。可選的,所述組織關系表為:存儲查詢維度之間關系的表。第三方面,本公開實施例還提供了一種電子設備,該電子設備包括:存儲器,存儲有可執行指令;處理器,所述處理器運行所述存儲器中的所述可執行指令,以實現第一方面任一的數據庫訪問方法。第四方面,本公開實施例還提供了一種計算機可讀存儲介質,該計算機可讀存儲介質存儲有計算機程序,該計算機程序被處理器執行時實現以實現第一方面任一的數據庫訪問方法。本公開基于分區關系表和組織關系表,通過當訪問分區關系表時所用的組織字段與表的分區字段相同時不進行組織轉化,直接拼SQL,然后執行SQL語句。當訪問分區關系表時所用的組織字段與表的分區字段不同時,查詢組織關系表,取得與表的分區字段相同組織的組織ID,用查到的組織ID和表分區字段的組織拼寫SQL,即組織轉化,然后執行SQL語句。從而解決多維度訪問數據庫大表時的性能問題,提高系統的響應速度和處理能力。本公開的其它特征和優點將在隨后具體實施方式部分予以詳細說明。附圖說明通過結合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。圖1示出了根據本公開的一個實施例的數據庫訪問方法的流程圖;圖2示出了根據本公開的一個實施例的SQL重構的流程圖;圖3示出了根據本公開的一個實施例的數據庫訪問裝置的結構示意圖。具體實施方式下面將更詳細地描述本公開的優選實施方式。雖然以下描述了本公開的優選實施方式,然而應該理解,可以以各種形式實現本公開而不應被這里闡述的實施方式所限制。如圖1所示,了一種數據庫訪問方法,包括:步驟S101:響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;步驟S102:基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;步驟S103:判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;步驟S104:如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;步驟S105:如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;步驟S106:執行所述第一SQL語句或所述第二語句訪問數據庫。可選的,所述查詢維度,包括業務組織、財務組織或管理組織。可選的,所述組織關系表為:存儲查詢維度之間關系的表。可選的,所述獲取查詢條件的步驟之間,包括:將數據量的表按照組織類型進行分區,所述組織類型包括業務組織、財務組織或管理組織;將分區后的表和及表的分區關鍵字存儲在分區關系表。可選的,所述獲取查詢條件為:在查詢頁面,錄入或選擇含查詢維度在內的查詢條件。Oracle的每個表都可以有多個索引,且分區索引的關鍵字可以和表的關鍵字相同,也可以不同,以服務不同的SQL語句,提高訪問數據的效率。對于訪問表中一種組織少量數據場景,可以按照該組織創建全局分區索引,而對于可能訪問一種組織較大占比數據的場景,根據表的分區組織和除組織維度外的其他訪問條件,創建本地分區索引。如果查詢條件的組織維度字段本文檔來自技高網...
【技術保護點】
1.一種數據庫訪問方法,其特征在于,包括:/n響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;/n基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;/n判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;/n如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;/n如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;/n執行所述第一SQL語句或所述第二語句訪問數據庫。/n
【技術特征摘要】
1.一種數據庫訪問方法,其特征在于,包括:
響應于查詢指令,獲取查詢條件,所述查詢條件包含查詢維度;
基于查詢條件和分區關系表獲取該查詢涉及的表的分區關鍵字字段;
判斷所述查詢條件中的組織字段與所述表的分區關鍵字字段是否相同;
如兩者相同,則基于所述組織字段和所述組織字段對應的組織ID值得到第一SQL語句;
如兩者不同,基于組織關系表獲取與查詢條件的組織類型相對應,且與表分區相同組織類型的具體值,基于所述表的分區字段和所述具體值得到第二SQL語句;
執行所述第一SQL語句或所述第二語句訪問數據庫。
2.根據權利要求1所述的數據庫訪問方法,其特征在于,所述查詢維度,包括業務組織、財務組織或管理組織。
3.根據權利要求1所述的數據庫訪問方法,其特征在于,所述組織關系表為:存儲查詢維度之間關系的表。
4.根據權利要求1所述的數據庫訪問方法,其特征在于,所述獲取查詢條件的步驟之間,包括:
將數據量的表按照組織類型進行分區,所述組織類型包括業務組織、財務組織或管理組織;
將分區后的表和及表的分區關鍵字存儲在分區關系表。
5.根據權利要求1所述的數據庫訪問方法,其特征在于,所述獲取查詢條件為:
在查詢頁面,錄入或選擇含查詢維度在內的查詢條件。
6.一種數據庫訪問裝置,其特征在于,...
【專利技術屬性】
技術研發人員:王恒峰,
申請(專利權)人:航天信息股份有限公司企業服務分公司,
類型:發明
國別省市:北京;11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。