当前位置:首页 » 编程语言 » sql分配空间

sql分配空间

发布时间: 2022-03-05 20:52:28

‘壹’ 在sql Server数据库中对象分配空间的基本单位是

SQL Server 存取数据的基本单位:页(Page),大小为8KB
一个盘区(Extent)由8 个连续的页组成。

‘贰’ 关于sql server数据库分配空间的问题

哈哈,居然有这样的问题,我都从来没有遇到过。可能数据库严重超过你原来注册的限制容量2048,你先把数据库收缩一下,然后再试一下扩容吧。
要是还不行,把数据分离了,然后再附加上去,呵呵。

‘叁’ SQL数据库怎么为每个用户分配不同的空间

在UserTB里加多一个字段[user]存放在User里的用户名,然后用筛选where [user]='A' --如果是A用户,其它用户类似
或是用筛选建立视图也行

‘肆’ 如何设置SQL服务器的内存分配

步骤如下:
点击Start > Run
键入WINMSD。
选择Memory选项。
记录下来计算的一个内存值物理存储器(k) SQL数据库的。
初始化SQL企业管理器。
选择为存储器分配将配置的数据库。
用鼠标右键单击在数据库并且选择配置。Server Configuration Options窗口打开。
选择Configuration选项。
移下来对内存行。有三列:“最低、最大数量、运行和当前内存分配”。

‘伍’ sql 2000数据库文件可分配空间最大可为多少

跟操作系统对文件的管理有关,fat32最大4G,fnt为硬盘剩余空间。

‘陆’ SQL服务器内存怎么动态分配

SQL服务器内存有两种基本管理方法:动态分配和静态分配

控制程序可使用的内存数量。动态分配允许管理员声明一块内存的大小;考虑到它的实际使用,SQL服务器可以分配给其需要占用的内存的最大值,并且(理论上)在没有使用内存的情况下将其释放。静态分配则是创建一块固定的内存空间,提供给SQL Server使用——不再进行分配。

在默认情况下,SQL Server被设置成动态分配,分配给其正在运行的计算机内所有可用的物理内存。许多管理员注意到SQL Server内存随时间的流逝被逐渐消耗殆尽时,其原因很可能是故障或是内存漏洞,但这个程序正是被设计成这样的。SQL Server就是要在任何可能的情况下在电脑中运行,并因此为达到其最佳性能而使用所有可用的内存。如果SQL Server在独立的机器中运行,那么就让它分配和释放其需要的内存吧。

在一个小型商业服务器机器中,SQL可能与其他程序,如IIS,同时运行,管理员或许尝试着进行设置,使SQL Server运行在一块固定大小的内存,目的是控制其不会占用用于共享的内存。但这并不一定能如愿以偿。一方面,将内存的最高限度设置得太低,并且没有分配给SQL服务器足够的可用内存来用作类似事务日志或查询执行的缓存,所有这些都很难办到。使SQL服务器得到执行操作所需内存的惟一方法就是换出其他的页面,这是个缓慢的过程。

有许多方法可以计算出最好的内存分配。如果你有可预知的用户负载,依照用户所需的最大数目分配给他们。微软推荐至少用4 MB用作动态的最大空间,这已经成为一个可能的规则。如果你的用户负载变化范围很大——如以下情况,当你通过IIS 的前端连接到公共的因特网来支持你的数据库服务的时候——实时的统计数据将会比仅凭猜测所作的工作帮助更大。在高峰期,把SQL Server的高速缓存命中率和每秒缺页率等性能数字搜集起来。如果这些数据表明SQL Server正在做大量的交换,那么增加最大内存空间直到交换逐渐减少。每秒一次或更多次的交换是有坏处的。

另一种选择是使“为SQL Server预留物理内存”的选项可用,这可以防止SQL Server把已经分配给它的内存换出,即使当其他应用程序能够使用它时。这可以叫做是一把双刃剑:它既可以相当大程度的提高性能,也可能带来更大的性能损害。在有许多RAM 可以共享的(1 GB 或更多)的系统中,这是值得一试的,但是当有其他关键的进程可能突然需要大量的内存时,这种办法是不应该使用的。(并且如果需要的话,SQL Server可能会被迫放弃一些它自己的内存)。如果SQL Server是在独立的机器上运行,用这种办法最佳化性能则是值得的。

‘柒’ SQL分配空间不足,请教如何解决

因SQL备份文件大小并不代表还原出来的数据库文件大小。有时候日志文件很大,其中大部分都是未使用的空间,而没有进行收缩就进行备份的话,备份文件中记录的还是日志文件的大小,在还原的时候就还是很大。你可以执行restore filelistonly来查看备份中文件的大小。比如你的备份文件是d:\db.bak,语句就是restore filelistonly from disk='d:\db.bak'在结果集中,size是文件的字节数。如果很大,最好还原到有足够空间的分区,注意要加move选项。

‘捌’ SqlServer是如何管理,分配存储空间的呢

Sql Server 区管理(GAM,SGAM)


大家都知道Sql Server 中数据文件存储的最小单位是页面(Page),但实际SQLSERVE并不是以页面为单位给数据分配空间的,Sql Server默认的存储分配单位是盘区(Extend)。这样做的主要原因是为了避免频繁的读写IO,提升性能。在表或其它对象分配存储空间,不是直接分配一个8K的页面,而是以一个盘区(Extend)为存储分配单位,一个盘区为8个页面(Size = 8*8K=64K)。

这样,对区得操作就会非常频繁,也要求Sql Server有自己的一套系统管理着数量众多的区。其中最突出的出一个问题,那就是在存储那些只有少量数据,不足8K的对象,如果也是分配给一个盘区,就会存在存储空间上的浪费,降低了空间分配效率。

为解决上述问题,SQLSERVER提供了一种解决方案,定义了两种盘区类型,统一盘区和混合盘区。

全局分配映射表 (GAM):统一盘区,GAM 页记录已分配的区。每个 GAM 包含 64,000 个区,相当于近 4 GB 的数据。GAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区可用;如果位为 0,则区已分配。

共享全局分配映射表 (SGAM):由多个对象共同拥有该盘区,SGAM 页记录当前用作混合区且至少有一个未使用的页的区。每个 SGAM 包含 64,000 个区,相当于近 4 GB 的数据。SGAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区正用作混合区且有可用页。如果位为 0,则区未用作混合区,或者虽然用作混合区但其所有页均在使用中。


在实际为对象分配存储盘区时,为了提高空间利用率,默认的情况下,如果一个对象一开始大小小于8个页面,就尽量放在混合盘区中,如果该对象大小增加到8个页面后,SQLSERVER会为这个对象重新分配一个统一盘区。

据区当前的使用情况,GAM 和 SGAM 中每个区具有以下位模式:



第0个bit为保留字节,始终为0

第1个bit表示该页面是否已分配,我们知道GAM页用来管理区是否已分配,但一个区包含8个页面,所以用该bit用来准确定位该区的某个页面是否已分配出去了。

第2个bit表示该页面是否混合分区的一个页面。

第3个bit表示该页面是否是一个IAM(索引分配映射)页面。

第4个bit表示该页面中是否包含幻影或已删除记录,这有助于SQL Server定期清理幻影或已删除记录。

第5~7个页面表示该页面的空间使用率情况。

‘玖’ 如何释放SQL表中己分配但又未使用的空间

SQL Server 2000 自动收缩有大量可用空间的数据库。该进程仅适用于那些 autoshrink 选项设置为 true 的数据库。服务器定期检查每个数据库中的空间使用情况。如果发现数据库中有大量闲置空间,而且它的 autoshrink 选项设置为 true,SQL Server 就缩小该数据库中的文件大小。也可以使用 SQL Server 企业管理器或 DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 语句,手工收缩数据库中的文件。文件始终从末端开始收缩。例如,如果有个 5 GB 的文件并将 DBCC SHRINKDB 语句中的 target_size 指定为 4GB,则 SQL Server 将从文件的最后一个 1 GB 开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则 SQL Server 首先将这些页重新定位到保留的部分。只能将数据库收缩到没有剩余的可用空间为止。例如,某个 5GB 的数据库有 4 GB 的数据并且 DBCC SHRINKDATABASE 语句的 target_size 被指定为 3 GB,则只释放 1 GB。如果 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 语句无法收回日志文件中的所有空间,该语句将发出信息,指示必须执行什么操作以释放更多符合条件的空间。收缩事务日志在下列情况下,日志文件的物理大小将减少: 执行 DBCC SHRINKDATABASE 语句时。执行引用日志文件的 DBCC SHRINKFILE 语句时。自动收缩操作发生时。 日志收缩操作依赖于最初的日志截断操作。日志截断操作不减小物理日志文件的大小,但减小逻辑日志的大小,并将没有容纳逻辑日志任何部分的虚拟日志标记为不活动。日志收缩操作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。减小大小的单位是一个虚拟日志文件。例如,如果有个 600 MB 的日志文件被分成了 6 个 100 MB 的虚拟日志,则该日志文件的大小只能按 100 MB 递减。比如,文件可以减小到 500 MB 或 400 MB,但不能减小到 433 MB 或 525 MB。不能释放容纳逻辑日志部分的虚拟日志。如果某个日志文件中的所有虚拟日志都容纳了逻辑日志部分,则不能收缩该文件,直到截断操作在物理日志的末端将一个或更多的虚拟日志标记为不活动。当收缩任何文件时,必须从文件的末端开始释放空间。当收缩事务日志文件时,从文件的末端开始释放足够的虚拟日志以将日志减小到用户所要求的大小。用户指定的 target_size 四舍五入为下一个最大的虚拟日志边界大小。例如,如果用户为包含 6 个 100 MB 虚拟日志文件的 600 MB 文件指定 325 MB 的 target_size,则删除最后两个虚拟日志文件,因此新的文件大小为 400 MB。在 SQL Server 2000 中,DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 操作试图立即将物理日志文件收缩到所要求的大小(以四舍五入的值为准): 如果虚拟日志中的逻辑日志部分没有超出 target_size 标记,则释放 target_size 标记之后的虚拟日志,并且成功完成 DBCC 语句,不出现任何信息。如果虚拟日志中的逻辑日志部分超出 target_size 标记,则 SQL Server 2000 释放尽可能多的空间并发出一条信息。该信息告诉您需要执行什么操作以获得文件末端超出虚拟日志的逻辑日志部分。执行完该操作后,可以重新发出 DBCC 语句以释放剩余的空间。

‘拾’ 数据库创建后怎样修改数据库数据文件和日志文件分配的空间大小

--修改数据库文件增量

USE master
GO
Alter DATABASE Test
MODIFY FILE
(NAME = test,
-- SIZE = 1000MB,
--MAXSIZE = 10000MB,
FILEGROWTH = 100MB)
GO

--修改数据库日志文件增量

USE master
GO
Alter DATABASE Test
MODIFY FILE
(NAME = test_log,
-- SIZE = 1000MB,
--MAXSIZE = 10000MB,
FILEGROWTH = 100MB)
GO

参考以下内容:

[c-sharp]view plainprint?
/*
一般的虚拟主机上,附送的sql server数据库都是限制了大小,比如100M。当你的数据库空间达到了指定的100M时,插入新数据就会报错:

未能为数据库 'a1116173958' 中的对象 'fc_Info' 分配空间,因为文件组 'PRIMARY' 已满

其实,有些主机商的数据库大小是可以自己修改的。当然,修改之前你需要知道数据库名(这里是逻辑名称),一般的这个名称是很容易知道的,就是数据库名称。

你可以尝试下在自己编写的程序中,或空间的管理后台中等可以执行sql语句的地方试一下下面的语句:

Alter DATABASE 数据库名
modify FILE
( NAME = 数据库名,
MAXSIZE = 200MB,
FILEGROWTH = 5MB)

如果执行成功,那么恭喜你了。

========我是分割线============================================

下面是Alter DATABASE的一些参考资料,详细可以查看sql server帮助。

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。Alter DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

Alter DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。

语法
Alter DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}

< filespec > ::=

( NAME = logical_file_name
[ , NEWNAME = new_logical_name ]
[ , FILENAME = 'os_file_name' ]
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] )

< optionspec > ::=

<state_option>
| < cursor_option >
| < auto_option >
| < sql_option >
| < recovery_option >
< state_option > ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
| { OFFLINE | ONLINE }
| { READ_ONLY | READ_WRITE }

< termination > ::=
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
< cursor_option > ::=
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
< auto_option > ::=
AUTO_CLOSE { ON | OFF }
| AUTO_Create_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_Update_STATISTICS { ON | OFF }
< sql_option > ::=
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
< recovery_option > ::=
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }

热点内容
算法工作原理 发布:2025-01-12 20:36:38 浏览:24
网络访问监控软件 发布:2025-01-12 20:26:57 浏览:465
养羊啦源码 发布:2025-01-12 20:25:48 浏览:570
轩逸朗逸哪个配置最好 发布:2025-01-12 20:10:00 浏览:49
主板存储器分 发布:2025-01-12 20:04:46 浏览:376
数据库逻辑运算 发布:2025-01-12 20:03:54 浏览:571
javawindows服务器搭建 发布:2025-01-12 19:59:37 浏览:570
linux关闭iptables 发布:2025-01-12 19:58:49 浏览:150
服务器电脑名字改了影响数据库吗 发布:2025-01-12 19:58:44 浏览:652
手机存储优化 发布:2025-01-12 19:58:43 浏览:356