在SQL Server中【文件组】到底是什么意思?
一、在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个字节表示字符。
猜你喜欢LIKE
相关推荐HOT
更多>>siri的工作原理是怎样的?
Siri是苹果公司开发的一种智能个人助手,通过语音识别和自然语言处理技术,可以帮助用户完成各种任务,如发送消息、预定餐厅、调整日程等。那么...详情>>
2023-10-16 22:16:20Go的golang.org/x/系列包和标准库包有什么区别?
1、来源和维护不同golang.org/x/系列包:这个系列的包也被称为”Go扩展库”,是由Go团队和社区共同维护的。这些包并不包含在Go的发行版中,但是...详情>>
2023-10-16 21:03:28行动召唤(Call to Action)的基本设计原则是什么?
行动召唤,或者更常见的英文缩写CTA(Call to Action),是一种强制性的设计元素,旨在引导用户进行特定的行为。这些行为可能包括购买产品、注...详情>>
2023-10-16 19:31:00系统类型中的标准、VHD和VHDX是什?
系统类型中的标准、VHD和VHDX是什么系统类型中的标准、VHD和VHDX是指计算机系统中的不同类型和格式。标准系统类型是指常见的操作系统,如Window...详情>>
2023-10-16 18:39:06热门推荐
时间序列和回归分析有什么本质区别?
沸什么是敏捷开发之Scrum框架?
热Tornado的核心是什么?
热XP(极限编程)有哪些缺点?
新siri的工作原理是怎样的?
机器学习算法中GBDT 和XGBOOST 的区别有哪些?
Go的golang.org/x/系列包和标准库包有什么区别?
无线AP和无线路由器有什么区别?
C语言“悬空指针”和“野指针”是什么意思?
行动召唤(Call to Action)的基本设计原则是什么?
Access 与Excel 最重要的区别是什么?
系统类型中的标准、VHD和VHDX是什?
COOKIE和SESSION有什么区别?
为什么说Java不适合编写桌面应用?