我的问题针对 Postgres,但来自任何数据库背景的答案可能就足够了。
我的假设是否正确:
设置系统时最好将所有块都设置为 8k?还是设置不重要?我还想知道某些“错误”的块大小设置是否会在崩溃时危及数据完整性?也许如果必须将 Postgres 8k 块拆分为多个磁盘块?
或者没有任何东西一起批处理,因此我会因定义的块大小之间的每一次不匹配而丢失磁盘空间?
标题几乎总结了它。我们的备份磁盘空间不足,需要从集合中删除旧备份。我似乎无法找到任何有关此的信息。
在我们的环境中,网络存储空间不足。同时,我想确保我们每 15 分钟进行一次事务日志备份,而不是每 6 小时一次。我的问题是将日志备份间隔从 6 小时更改为每 15 分钟会消耗更多磁盘空间吗?
我已手动将 mdf/ndf 文件调整为较大的大小,以避免对 SQL Server 数据库进行自动增长操作。由于文件较大,磁盘分区上的可用空间很少,系统管理员不断提醒我空间不足。
因为我调整了它们的大小,所以数据文件中有很多可用空间,但在查看文件大小/磁盘可用空间时不会注意到它。
如何监控数据文件的实际使用百分比?我更喜欢使用 perfmon 计数器。我担心当文件真的用完空间时,SQL Server 将无法分配足够的空间并且会崩溃。
我在 Mac (10.10.4) 上运行 postgres (postgis) 9.4.2。
我有几张大桌子(几个 TB)。
在其中一个索引构建过程中大约需要一周时间,我看到可用的高清空间下降,正如您所期望的那样,当停电时间比电池单元和系统持续时间更长时索引将完成下楼。我fillfactor=100在构建期间关闭了缓冲区,因为它是一个静态数据源。重新启动时,驱动器上剩余的可用空间正是索引构建接近结束时的位置。真空分析不会释放空间。
我尝试放下桌子并重新摄取,但并没有减少空间。现在我所在的地方没有足够的空间来构建索引。
索引构建期间生成的文件是否由于停电期间机器停机的方式而无法被系统删除?
当我查看数据库中的表大小 + 索引(这是该驱动器上唯一的数据)时,它们加起来大约6TB。驱动器为8TB,驱动器上剩余的空间不足500GB,因此似乎在某处丢失了大约 1.5TB,这与索引的大小差不多。
有任何想法吗?
我在 PostgreSQL 数据库中有一个大量使用的表(大约有 500 万行),我想在其中删除一列并回收该列使用的空间。
文档建议进行表重写ALTER TABLE以强制返回空间,但这在使用表时运行并不安全,并且会导致停机。是否有任何不需要停机的实用选项?我试图运行该pgcompact工具,但这并没有改变任何东西。
在托管 postgresql 数据库的 Ubuntu 机器中,我在/var/lib/postgresql/9.3/main/pg_log. 显然,几个月前的日志文件也被存储了。我手动删除了一些以摆脱我的disk full错误。每周删除旧的 postgresql 日志的可靠方法是什么?我可以做些什么postgresql.conf来自动化这个过程?
目前我有以下内容postgresql.conf:
#log_truncate_on_rotation = off # If on, an existing log file with the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation, not on restarts
# or size-driven rotation. Default is
# off, meaning append to existing files
# in all cases.
#log_rotation_age = 1d # …Run Code Online (Sandbox Code Playgroud) 我一直在努力让我们的数据库客户端主动避免填满他们正在使用的数据库所在的分区。
由于我们所有的客户端都与数据库管理器在同一台主机上,因此对于用户创建的表空间来说应该很容易;客户端可以查找表空间的文件系统路径(在 spclocation 中),并使用操作系统调用来检查有多少可用空间:
adb=> select * from pg_tablespace;
spcname | spcowner | spclocation | spcacl
------------+----------+-------------------+---------------------
pg_default | 10 | |
pg_global | 10 | |
adb | 2033793 | /database/adb | {adb=C/adb}
Run Code Online (Sandbox Code Playgroud)
我无法从客户端看到如何获取全局表空间存储位置的路径;在上面的查询中为它返回一个空字符串。
不幸的是,我们在该领域有许多遗留系统使用在全局表空间中创建的特定数据库,将它移到用户创建的表空间中将是一项巨大的努力。
希望我只是错过了一些非常简单的东西。
我有一个大约 6Gb 的备份。它是原始文件的“轻量级”备份(清除了日志表),大约为 14Gb。
我尝试在我的 SQL Express 本地服务器上恢复备份。它失败并显示类似 : 的消息System.Data.SqlClient.Error: insufficient disk space。它要求 227,891,019,776 字节,这绝对是疯狂的,几乎和我的整个硬盘一样大。
正如在其他网站上发现的那样,我尝试了RESTORE FILELISTONLY FROM DISK = 'backupfile.bak'.
数据文件(列Size)的大小为 6,888,226,816,但日志文件的大小为 221,006,987,264。该列BackupSizeInBytes返回 6,259,736,576 和 0。
因此,如果我理解正确,则在继续之前,恢复检查我是否有足够的空间来恢复日志文件的“理论”大小,而忽略实际的日志文件大小?
我怎样才能绕过它?获得备份有点困难,所以如果我能在不返回生产服务器的情况下解决我的问题,那就太好了。
谢谢 !
哦顺便说一句,我在 SQL Server 2008 R2 Express 上。
我看到了这个问题Bit vs. Boolean columns。
对于 Postgres,我问自己同样的问题:一位整数列是否占用了布尔值列的相同磁盘空间?在大表(约 50 列 x 约 5000 万行)中,哪一个表现最好?我怎样才能找到这个?
postgresql performance database-design optimization disk-space postgresql-performance
disk-space ×10
postgresql ×5
backup ×3
sql-server ×3
vacuum ×2
ddl ×1
index ×1
maintenance ×1
monitoring ×1
network ×1
optimization ×1
perfmon ×1
performance ×1
restore ×1