一、在SQL Server中【文件組】什么意思
在SQL Server中【文件組】是指數據文件的組合,其稱作文件組(File Group),數據庫不能直接設置存儲數據的數據文件,而是通過文件組來指定。文件是實際存儲數據的物理實體,文件組是邏輯對象,SQL Server通過文件組來管理文件。
一個數據庫有一個或多個文件組,主文件組(Primary File Group)是系統自動創建的,用戶可以根據需要添加文件組。每一個文件組管理一個或多個文件,其中主文件組中包含主數據文件(master data file),擴展名是.mdf,這個文件是系統默認生成的,并且在數據庫中是少數的;輔助文件的擴展名是.ndf,是用戶根據需要添加的。主文件組中也可以包含輔助文件,除了主文件組之外,其他文件組只能包含輔助文件。
文件組是一個邏輯實體,實際上,數據存儲在文件中(.mdf和.ndf)中,每一個文件組中都包含文件,因此,在create table和create index命令中指定文件組,那么數據就會存儲到文件組包含的文件中。
在實際開發數據庫的過程中,通常情況下,用戶需要關注文件組,而不用關心文件的物理存儲,即使DBA改變文件的物理存儲,用戶也不會察覺到,也不會影響數據庫去執行查詢。除了邏輯文件和物理文件的分離之外,SQL Server使用文件組還有一個優勢,那就是分散IO負載,其實現的原理是:
對于單分區表,數據只能存到一個文件組中。如果把文件組內的數據文件分布在不同的物理硬盤上,那么SQL Server能同時從不同的物理硬盤上讀寫數據,把IO負載分散到不同的硬盤上。對于多分區表,每個分區使用一個文件組,把不同的數據子集存儲在不同的磁盤上,SQL Server在讀寫某一個分組的數據時,能夠調用不同的硬盤IO。這兩種方式,其本質上,都是使每個硬盤均攤系統負載,提高IO性能。
創建分區表時,不同的分區可以使用相同的文件組,也可以使用不同的文件組。因此,在設計文件組時,應盡量把包含的文件包含在不同的硬盤上,以實現物理IO的最大分散化。
在創建文件時,服務器CPU核的數量,決定最大的并發IO度,應該根據CPU 核的數量創建多個文件。通常情況下,文件的數量和CPU核的數量一致,是優異化的設計。
還有,應該根據硬盤的性能來創建文件組,日志文件存儲到性能較好的硬盤上,而查詢延遲要求高的數據,也需要存儲到性能較好的硬盤上。
不是所有的數據都是同等重要的,應該根據業務需求和查詢延遲,對數據分級,因此,在設計文件組時,應該把級別高的數據分散,而把那些基本用不到的數據存儲到性能差的,用于存儲歸檔數據的硬盤上,以實現服務器性能的合理配置。
延伸閱讀:
二、字符集(Character set)是什么
是多個字符(英文字符,漢字字符,或者其他國家語言字符)的集合,字符集種類較多,每個字符集包含的字符個數不同。
特點:
①字符編碼方式是用一個或多個字節表示字符集中的一個字符
②每種字符集都有自己特有的編碼方式,因此同一個字符,在不同字符集的編碼方式下,會產生不同的二進制
常見字符集:
ASCII字符集:基于羅馬字母表的一套字符集,它采用1個字節的低7位表示字符,高位始終為0。
LATIN1字符集:相對于ASCII字符集做了擴展,仍然使用一個字節表示字符,但啟用了高位,擴展了字符集的表示范圍。
GBK字符集:支持中文,字符有一字節編碼和兩字節編碼方式。
UTF8字符集:Unicode字符集的一種,是計算機科學領域里的一項業界標準,支持了所有國家的文字字符,utf8采用1-4個字節表示字符。