我有一个快速增长的数据库。非常迅速。我的/db目录现在是 100%,并且pg_xlog.
我的背景是 Oracle 和 MySQL。我不知道这个数据库发生了什么。我知道我需要尽快聘请 Postgres DBA。
在短期内我可以做些什么来解决我的问题?我注意到删除数据并不能缓解我的空间问题。
pg_settings 的输出是:
archive_command /bin/true configuration file
archive_mode on configuration file
archive_timeout 1min configuration file
checkpoint_segments 100 configuration file
checkpoint_timeout 5min configuration file
client_encoding UTF8 session
DateStyle ISO, MDY configuration file
default_statistics_target 100 configuration file
default_text_search_config pg_catalog.english configuration file
effective_cache_size 1358MB configuration file
hot_standby on configuration file
hot_standby_feedback on configuration file
lc_messages C configuration file
lc_monetary C configuration file
lc_numeric C configuration file
lc_time C configuration file
listen_addresses …Run Code Online (Sandbox Code Playgroud) 我们的 PostgreSQL 9.0 Windows 生产服务器空间不足。
在我们的 100GB 数据库中,我们有一个包含 TOAST 二进制数据的大表。我们删除了一些行,需要将空间归还给 O/S。
我们没有足够的空间做表的全部重写,所有我的读书CLUSTER,VACUUM FULL而且pg_repack是他们需要重写表。到目前为止,我的 google-fu 还不足以找到其他任何东西。
一些停机时间是可以接受的(约 2 小时),但是备份/恢复对于我们的目的来说太慢了,我也不热衷于在步骤之间删除数据库。
问题:如何在不进行全表重写的情况下将磁盘空间返回给 O/S?
(这是一个生产服务器,因此任何解决方案都必须有信誉/推荐/支持等)。
(PS 可以使用一个单独的更大的磁盘,如果可以以某种方式在其上重建表。表空间?)
我需要一个将以下结果放在一起的查询:
到目前为止,我已经整理了以下查询:
SELECT
GETDATE() as dt
,@@SERVERNAME as srv
,F.name
,F.physical_name
,Round(F.size * 8 / 1024, 2) as FileSizeMb
, CAST(FILEPROPERTY(F.name, 'SpaceUsed') AS INT)/128 as FileUsedMB
,(F.size/128 - CAST(FILEPROPERTY(F.name, 'SpaceUsed') AS INT)/128) AS FileFreeMB
,Convert(decimal(18,2), (F.size/128 - CAST(FILEPROPERTY(F.name, 'SpaceUsed') AS INT)/128) / (F.size * 8 / 1024.1) * 100) as SpaceFreePerc
,stat.size_on_disk_bytes / 1024 / 1024 SizeOnDiskMb
,drv.volume_mount_point, drv.logical_volume_name, drv.available_bytes, drv.total_bytes
FROM sys.master_files F
inner join sys.dm_io_virtual_file_stats(NULL, NULL) stat on F.database_id = stat.database_id AND F.file_id = stat.file_id …Run Code Online (Sandbox Code Playgroud) sql-server sql-server-2008-r2 disk-space datafile compatibility-level
我在 SQL Server 2005 中有一个巨大的表。(该表大约 40GB)我正在寻找最安全、最轻松的方式来释放空间或延迟其增长。
该表具有三个固定长度 ( char(10)) 列,它们 a) 完全不需要,b) 几乎完全填充了NULL.
如果我删除这些列,SQL Server 是否会在导入新记录时开始使用数据文件中释放的空间?或者由于分散在许多记录上,它们的碎片性质(我假设)是否意味着 SQL Server 将出于性能原因忽略该空间?
如果我删除它们,我可以运行收缩数据库来释放空间吗?
我是唯一使用这个数据库的开发人员,我知道这些列对于需求来说是多余的。15 年前,当不同的懒惰开发人员创建此数据库时,它们与其他所有列一起添加到平面文件中。
我的公司有一个用于 LANDesk 的小型 SQL 环境,他们希望将所有服务器迁移到每个区域的单个 SQL 集群。我想知道的是,我如何确定这种场景的容量?我已经获得了每台服务器(All Landesk)的数据库增长,我可以将这些数据作为整合到单个 SQL 集群的粗略估计吗?Windows 团队告诉我,来自这些服务器的数据有点不稳定,可能无法给出他们想要的准确结果。
有问题的新集群已经有几个数据库,但还没有达到最大容量。一旦他们开始添加来自服务器的剩余数据,它应该达到其全部容量。我已经运行 Perfmon 一段时间了,为了检查数据库增长,我使用了 sqlskills.com 中的以下 TSQL 代码
SELECT
[database_name] AS "Database",
DATEPART(month,[backup_start_date]) AS "Month",
AVG([backup_size]/1024/1024) AS "Backup Size MB",
AVG([compressed_backup_size]/1024/1024) AS "Compressed Backup Size MB",
AVG([backup_size]/[compressed_backup_size]) AS "Compression Ratio"
FROM msdb.dbo.backupset
WHERE [database_name] = N'AdventureWorks'
AND [type] = 'D'
GROUP BY [database_name],DATEPART(mm,[backup_start_date]);
Run Code Online (Sandbox Code Playgroud)
我能做些什么来获得准确的结果吗?LANDesk 团队不希望我使用旧服务器,我唯一的选择是使用他们计划迁移所有数据的新集群,而我只有 6 个月的数据。我应该问他们这个新集群的使用年数之类的问题吗?等等...
谢谢大家的答案。这是我从 PAL 工具中得到的
我使用 PAL 工具来确定 perfmon 数据,这些是它给出的一些警告
1) 响应时间大于 25 毫秒 2) 空闲时间少于 10% - 磁盘队列在 90% 的时间内至少有 1 个未完成的 I/O 3) …
我们的磁盘空间不足。
该服务器有一个 420 GB 的 HDD,并运行一个 Microsoft SQL Server 和一个 Oracle Server(10g)。
Oracle 服务器最多使用 315 GB 空间。我们刚刚加载了一个 100GB 的 Microsoft SQL Server 数据库。现在我们有大约 5GB 可用空间,需要备份 SQL Server 数据库。
首先,我们尝试将备份移动到另一个驱动器,但这不起作用。
然后我们尝试调整我们的 Oracle Server 的分配空间的大小,它由 6 个文件组成,每个文件 20GB,每个文件使用大约 4GB。当我们尝试将此文件大小调整为 10GB 时,我们收到 Oracle 错误 ORA-03297,但显示已使用 4GB。经过多次尝试,我们可以将一些文件缩短到 16/17/18GB,但我们仍然需要更多空间。
是否有解决方案如何将 Oracle 文件的大小调整为每个 10GB?
我们尝试过 Coalesce 并释放未使用的空间,但这也不起作用。
我对字符变化列有一个独特的限制,该列的长度通常约为 600,但可以达到 1000 万。
我已经阅读了B-Trees,但我无法确定索引将消耗多少磁盘空间,或者如此大的值是否会阻止索引高效运行。
具有如此大长度的字符变化列对 B 树索引的磁盘空间和时间有何影响?
我在 SQL Server 2008 R2 Express上运行一个相当大的数据库。最近我达到了 10GB 的限制,所以系统不允许我创建更多的对象,等等。
我已经归档了大量记录,大约是那里数据的四分之三。
数据库文件仍然在 10GB 左右,我想知道是否需要做任何事情来释放 SQL Server 中的可用空间。
我正在学习数据库操作,我在网上找到了一些资源,这些资源让我有了一个松散的理解,但我自己仍然无法解释其中的区别。请像我五岁那样解释。我想确保我有一个坚实的基础来扩展我的知识。
disk-space ×10
sql-server ×4
postgresql ×3
windows ×2
btree ×1
datafile ×1
index ×1
migration ×1
oracle ×1
oracle-10g ×1
performance ×1
shrink ×1
storage ×1
t-sql ×1
vacuum ×1