1. 数据库分区的分类
分区主要有两种形式://这里一定要注意行和列的概念(row是行,column是列)
水平分区(Horizontal Partitioning)
这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)
垂直分区(Vertical Partitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。
举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。
在数据库供应商开始在他们的数据库引擎中建立分区(主要是水平分区)时,DBA和建模者必须设计好表的物理分区结构,不要保存冗余的数据(不同表中同时都包含父表中的数据)或相互联结成一个逻辑父对象(通常是视图)。这种做法会使水平分区的大部分功能失效,有时候也会对垂直分区产生影响。
2. oracle数据库怎么建分区
一般亏码语法:
createtablet_test(
pk_idnumber(30)notnull,
add_date_timeDATE,
constraintPK_T_TESTprimarykey(pk_id)
)
PARTITION缓空散BYRANGE(add_date_time)
(
PARTITIONt_test_2013_lessVALUESLESSTHAN(TO_DATE('2013-01-0100:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS,
PARTITIONt_test_2013VALUESLESSTHAN(TO_DATE('2014-01-0100:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS,
PARTITIONt_test_2014VALUESLESSTHAN(TO_DATE('2015-01-01扰氏00:00:00','yyyy-mm-ddhh24:mi:ss'))TABLESPACETS_MISPS
);
3. SQL server 怎样可以让一个数据库用几个磁盘分区
向数据库添加数据文件就行了, 可以添加多个
ALTER DATABASE 你的库名
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'x:\t1dat2.ndf', -- 设定文件在不同的磁盘分区
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
一个数据库可以由以下三种数据库文件组成:
1.主数据文件(*.mdf)
2.次数据文件(*.ndf)
3.事务日志文件(*.ldf)
其中主数据文件是所有数据库文件的起点,每个数据库有且只有一个主数据文件。
次数据文件用来保存主数据文件中容纳不下的数据,可以有0个或者多个。
事务日志文件就不说了,看名字就知道是做什么用的。
使用create database 语句建库的时候可以设定数据库文件的属性(包括文件名称和保存位置)。
使用alter database 语句可以添加,删除和修改数据库文件的属性。
4. 数据分片应遵守哪些基本原则数据分片有哪些基本类型和方法
链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。
分片(sharding)是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。碎片这个词意思就是整体的一小部分。
Jason Tee表示:“简言之,分片(sharding)数据库需要将数据库(database)分成多个没有共同点的小型数据库,且它们可以跨多台服务器传播。”
技术上来说,分片(sharding)是水平分区的同义词。在实际操作中,这个术语常用来表示让一个大型数据库更易于管理的所有数据库分区。
分片(sharding)的核心理念基于一个想法:数据库大小以及数据库上每单元时间内的交易数呈线型增长,查询数据库的响应时间(response time)以指数方式增长。
另外,在一个地方创建和维护一个大型数据库的成本会成指数增长,因为数据库将需要高端的计算机。相反地,数据碎片可以分布到大量便宜得多的商用服务器上。就硬件和软件要求而言,数据碎片相对来说没什么限制。
在某些情况中,数据库分片(sharding)可以很简单地完成。按地理位置拆分用户数据库就是一个常见的例子。位于东海岸的用户被分到一台服务器上,在西海岸的用户被分在另一台服务器上。假设没有用户有多个地理位置,这种分区很易于维护和创建规则。
但是数据分片(sharding)在某些情况下会是更为复杂的过程。例如,一个数据库持有很少结构化数据,分片它就可能非常复杂,并且结果碎片可能会很难维护。
分片过程
对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。
5. 如何对已经存在的数据表进行分区
过程中为SQL Server数据表划分为三个步骤:
1)建立分区函数
2)建立分区方案
3)对表的分区
第一步:建立分区函数
分区函数定义[U]如何[/ U],也就是你想怎么SQL Server数据分区。这里不是一个特定的表作为一个例子,但总的技术部门总结的数据。
分区指定为每个分区用分区边界来实现。例如,假设我们有一个客户表,其中包含所有的企业客户信息,客户信息与客户的唯一标识号,客户编号从1到100万。我们可以使用下面的分区功能(这里称为customer_Partfunc)把这个表分为四个分区:
CREATE PARTITION FUNCTION customer_partfunc(INT)
AS RANGE RIGHT
输入值( 250000,500000,750000)
这些边界划分指定了四个分区。第一个分区包含所有值?少于25万的记录。第二个分区包含所有值?之间250,000和499,999的记录。第三个分区包含所有值?500,000至749,999记录。大于或等于750,000的所有其他记录都包含在第四个分区中。
请注意,此示例使用“RANGE RIGHT”条款。这表明,该边界值是分区的右侧。同样,如果您使用“RANGE LEFT”条款,那么第一个分区将包含所有的值小于或等于25万条记录;?第二个分区将包含所有的值250001和500000之间的记录,等等??
第二步:创建
分区方案
一旦如何分区功能分区后的数据完整的定义,下一步是创建一个分区方案,定义[ U],其中[/ U],这就是你要分区的数据。这是一个非常简单的过程,例如,如果我有四个文件组,从“FG1”到“FG4”的名字,那么你可以使用下面的分区方案:
创建分区计划customer_partscheme
作为间隔customer_partfunc
要(FG1,FG2,FG3,FG4)
请注意,我们现在把一个分区函数连接到分区规划,但我们还没有连接在分区方案的任何具体的数据库表。这是重复使用的功能函数时。我们可以利用这个功能来分区方案(或只是一个分区函数)对数据库表的任何数据。
第三步:表已分区
建立良好的分区方案后,就可以开始对表进行分区。这是最简单的一步,只需加上“ON”子句中的表创建语句指定表的分区方案,并申请表列的分区方案。你不需要指定分区函数,分区方案已经因为分区函数定义。
例如,假设你想使用上述的分区方案来创建一个客户表,您需要使用以下Transact-SQL语句:
CREATE TABLE客户(姓数据类型为nvarchar(40),姓氏为nvarchar(40),CUSTOMERNUMBER INT)
开customer_partscheme(CUSTOMERNUMBER)