高麗娟
摘要:與常規(guī)數(shù)據庫相比,大數(shù)據庫不僅僅是數(shù)據存儲量巨大,每一個表結構記錄的條數(shù)也更大,其對于系統(tǒng)管理、系統(tǒng)性能等提出了許多新的要求。為了對大數(shù)據表在查詢過程中農工存在的延遲問題以及管理問題進行解決,可以將表分區(qū)方法引入其中。該文從表分區(qū)的原理出發(fā),以SQL Server 2012為例,對大數(shù)據庫優(yōu)化中表分區(qū)的實現(xiàn)方法進行了研究和討論,希望能夠借此提升大數(shù)據庫數(shù)據管理與查詢的效率。
關鍵詞:表分區(qū);大數(shù)據庫;優(yōu)化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)26-0018-02
Abstract: Compared with the conventional database, the large database is not only a huge amount of data storage, but also a larger number of records per table structure. It puts forward many new requirements for system management and system performance. In order to solve the delay problem and management problem of the agricultural workers in the query process of the big data table, the table partitioning method can be introduced. Based on the principle of table partitioning, this paper takes SQL Server 2012 as an example to study and discuss the implementation method of table partitioning in large database optimization, hoping to improve the efficiency of large database data management and query.
Key words: table partitioning; large database; optimization
大數(shù)據背景下,海量數(shù)據的存儲與管理成為了人們關注的核心問題,一些大型數(shù)據庫的存儲量達到了TB甚至PB的級別,單個表格記錄的數(shù)據可以達到數(shù)千萬甚至上億,這個數(shù)據還會隨著數(shù)據庫的更新而不斷增加。在這樣的背景下,數(shù)據庫運行效率受到了很大影響,維護管理的難度也大大增加,想要對大數(shù)據庫進行有效管理,可以將表分區(qū)的方法引入其中,針對大數(shù)據庫進行優(yōu)化。
1 表分區(qū)的原理
表分區(qū)的基本原理,是將存在于數(shù)據庫中的達標的數(shù)據分割開來,形成被稱為分區(qū)的若干較小的子集,類型有很多,如NTFS、FAT32等,這些子集如果從邏輯關系分析,依然屬于一張表。對于程序人員而言,表分區(qū)高度透明,因此在進行程序開發(fā)設計的過程中,并不需要考慮表分區(qū)的物理存儲問題。結合SQL Server 數(shù)據庫進行分析,表分區(qū)表現(xiàn)為垂直分區(qū)和水平分區(qū)兩種不同形式,前者指將表分成行數(shù)相同,列數(shù)較少的表,后者則是將表分為列數(shù)相同,行數(shù)較少的表。通過大表分區(qū)的方式,能夠顯著提升數(shù)據查詢效率,如果需要對某個分區(qū)中的對象進行查詢,則只需要針對其所在的分區(qū)進行掃描即可。舉例說明,某數(shù)據表記錄的數(shù)據條數(shù)達到了千萬級別,如果依照月份對數(shù)據表進行分區(qū),則特定月份的查詢可能只需要在百萬級或者十萬級的基礎上進行掃描,能夠極大地壓縮查詢范圍。在進行表分區(qū)的過程中,如果系統(tǒng)本身設置有復數(shù)的CPU或者磁盤,可以在不同磁盤上,設置不同分區(qū)表,結合并行操作,能夠促進系統(tǒng)響應性能的強化,提升其對于數(shù)據的吞吐量和吞吐效率。如果條件允許,可以以表分區(qū)為基本單位,針對數(shù)據進行必要的操作,如移動、備份等,確保在系統(tǒng)遭遇故障或者風險時,不會出現(xiàn)大規(guī)模數(shù)據損壞或者丟失的情況,技術人員只需要對故障分區(qū)進行隔離和恢復即可,故障影響范圍更小,處理速度更快,數(shù)據的維護和管理也更加便捷[1]。
2 表分區(qū)的實現(xiàn)
這里以SQL Server 2012數(shù)據庫為例,對利用表分區(qū)實現(xiàn)大數(shù)據優(yōu)化的方法進行簡單分析。
2.1 數(shù)據文件結構
在SQL Server 2012數(shù)據庫中,數(shù)據文件的常見類型有三種:一是主數(shù)據文件(.mdf),這是每一個數(shù)據庫中必然存在的數(shù)據文件,系統(tǒng)相關的各種信息都存儲在其中,而且配合相應的系統(tǒng)功能,主數(shù)據文件還能夠實現(xiàn)對數(shù)據庫中其他文件的跟蹤;二是輔助數(shù)據文件(.ndf),與主數(shù)據文件的單一性不同,輔助數(shù)據文件在數(shù)據庫中可能沒有,也可能有多個,其主要功能是對用戶數(shù)據進行存儲;三是日志文件(.idf),任何數(shù)據庫都至少有一個日志文件,其中包含了數(shù)據庫故障恢復所需的各種信息,日志文件并不屬于任何文件組[2]。
為了方便進行分配和管理,很多時候技術人員都會對數(shù)據庫文件進行分組,如果分組中包含主數(shù)據文件,則可以將其稱為主文件組,其余的文件組屬于用戶定義文件組,在每個數(shù)據庫中并不具備唯一性,可以有一個,也可以很多個。
2.2 表分區(qū)實現(xiàn)步驟
在SQL Server 2012數(shù)據庫中,表分區(qū)的創(chuàng)建需要依照基本步驟進行:一是開展整體規(guī)劃,具體來講,就是結合數(shù)據庫的實際情況,針對分區(qū)字段和分區(qū)個數(shù)等參數(shù)信息進行明確;二是做好分區(qū)函數(shù)創(chuàng)建,結合分區(qū)函數(shù),確定不同分區(qū)表的邊界。分區(qū)函數(shù)可以對表分區(qū)邏輯框架進行確定,通??梢岳肨-SQL語句完成[3]:
CREATE FUNCTION Partition_Function Name(Parameter Type) AS RANGE[LEFT/RIGHT] FOR VALUES ([boundary_value[,…,n]])。
分區(qū)函數(shù)與常規(guī)意義上的用戶自定義函數(shù)存在很大區(qū)別,僅僅被用于分區(qū)表的創(chuàng)建;三是創(chuàng)建分區(qū)方案,分區(qū)方案或者說分區(qū)架構可以將每一個分區(qū)映射到相應的文件組中,在方案中應該確定好分區(qū)方案,然后運用相應的計算機語言,生成分區(qū)方案語句:
CREATE PARTITION SCHEME partition_scheme_name AS PARTITION partition_name TO(file_group_name,…)。
從具體情況分析,所有分區(qū)表的映射都能夠集中在一個文件組內,當然也可以選擇部分分區(qū)表在一個文件組內完成映射,從保證數(shù)據庫運行效果的角度,在條件允許的情況下,應該盡量在不同文件組映射不同分區(qū)表,以此來實現(xiàn)I/O均衡。在分區(qū)表創(chuàng)建過程中,分區(qū)函數(shù)和分區(qū)方案非常關鍵,兩者只被用于分區(qū)表及分區(qū)索引中;四是分區(qū)表或索引創(chuàng)建,對象創(chuàng)建環(huán)節(jié),必須指定要使用的分區(qū)方案,然后就可以運用T-SQL語句進行分區(qū)表或者分區(qū)索引的創(chuàng)建[4]。
3 表分區(qū)的管理
表分區(qū)的應用,能夠對大數(shù)據庫進行優(yōu)化,提升數(shù)據維護管理的便利性。而結合表分區(qū)實現(xiàn)方法分析,分區(qū)函數(shù)的改變是實現(xiàn)分區(qū)操作的基礎和前提,如果其在運行過程中產生變化,則在經過分區(qū)架構的傳遞后,這種變化會在分區(qū)表中體現(xiàn)出來。結合實踐分析,對應的變化包括了分區(qū)拆分、分區(qū)添加、分區(qū)刪除、分區(qū)合并等,在沒有特殊要求的情況下,無論是分區(qū)拆分還是分區(qū)合并,只需修改分區(qū)函數(shù)就能實現(xiàn),但是如果想要確定分區(qū)表映射的文件組,必須利用分區(qū)架構,經NRXT USED指定T-SQL語句。分區(qū)拆分與合并的主要作用是實現(xiàn)數(shù)據備份轉移,SQL Server 2012中,可以結合基于元數(shù)據的操作,實現(xiàn)數(shù)據在不同分區(qū)的轉移,數(shù)據本身并不需要進行移動,而且整個過程耗時極短,基本不會對系統(tǒng)產生影響。從用戶的角度,可以針對分區(qū)數(shù)據開展如下操作:一是對某個分區(qū)進行重新指派,形成單表;二是將一張表看做是一個分區(qū),轉移到另外一個已經存在的分區(qū)表中[5]。
4 結束語
總而言之,面對大數(shù)據庫中存儲的海量數(shù)據,可以引入分區(qū)表的方法來進行優(yōu)化,提升大數(shù)據庫數(shù)據處理的效率和管理維護效果。本文結合表分區(qū)的基本原理,以SQL Server 2012數(shù)據庫為例,對表分區(qū)的實現(xiàn)方法及管理進行了分析,對比以往的大數(shù)據庫數(shù)據處理模式,在引入表分區(qū)方法后,能夠極大地壓縮數(shù)據查找范圍,提升數(shù)據查詢效率,也可以實現(xiàn)I/O均衡,促進系統(tǒng)數(shù)據即時吞吐量的提高。
參考文獻:
[1] 周濤,楊麗紅,張軍,等.SQL Server 2005大型數(shù)據庫優(yōu)化之表分區(qū)詳解[J].云南大學學報:自然科學版,2013,35(s2):59-62.
[2] 周奇才,甘凱,王磊,等.大型設備遠程監(jiān)控與管理系統(tǒng)數(shù)據庫優(yōu)化方法研究與應用[J].機電一體化,2015,21(9):39-43.
[3] 楊瑩.基于Oracle數(shù)據庫大數(shù)據的檢索優(yōu)化分析與設計[J].數(shù)碼世界,2017(4):31-32.
[4] 王三蕊.ORACLE數(shù)據庫優(yōu)化之分區(qū)技術[J].電子技術與軟件工程,2016(12):182-183.
[5] 郭玲.弱匹配模型下的數(shù)據庫分區(qū)查詢方法研究[J].科技通報,2015(1):199-201.
[通聯(lián)編輯:光文玲]