Questions tagged «database-size»

4
我需要在没有可用磁盘空间的情况下运行VACUUM FULL
我有一张桌子占用了我们服务器上接近90%的高清空间。我决定删除几列以释放空间。但是我需要将空间返回给操作系统。但是,问题是我不确定如果我运行VACUUM FULL并且没有足够的可用空间来复制表,会发生什么。 我知道不应该使用VACUUM FULL,但是我认为这是这种情况下的最佳选择。 任何想法,将不胜感激。 我正在使用PostgreSQL 9.0.6


6
缩小日志文件不会减小大小
我有一个数据库,该数据库具有350 MB数据文件(.mdf)和4.9 GB日志文件(.ldf)。恢复模型设置为FULL。 当我尝试收缩日志文件时,它没有收缩。 我知道收缩数据库是不好的,不应该这样做。但是我仍然在尝试缩小日志文件。 我跑的时候 DBCC SQLPerf(logspace) 我发现日志大小为4932 MB,使用的日志空间为98.76%! 然后我尝试了这个命令 USE <databasename>; DBCC loginfo; 现在几乎所有的VLF均为“状态2”,这意味着所有VLF都在使用中。 我尝试进行日志备份,然后缩小日志文件。缩小并没有减小尺寸。 我将恢复模型更改为SIMPLE并尝试再次缩小,但这也无济于事。 我检查了未结交易 DBCC opentran (database); 并发现现在没有任何交易打开。 是什么阻止了我缩小日志文件?我该如何解决?

2
为什么没有DELETE + REORG可用磁盘空间(DB2)?
在DB2中,我有一个包含大型二进制数据的表。现在,我清除了整个表并运行runstats,reorg,runstats,但是所占用的磁盘空间没有改变。这有什么问题吗? 该表位于自己创建的表空间中,如下所示: CREATE BUFFERPOOL "MY_BP" SIZE 250 AUTOMATIC PAGESIZE 4096; CREATE LARGE TABLESPACE MY_TBS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 64 PREFETCHSIZE 64 BUFFERPOOL MY_BP OVERHEAD 10.500000 TRANSFERRATE 0.140000 FILE SYSTEM CACHING; 我删除/重组如下: DELETE FROM MY_TBL RUNSTATS ON TABLE MY_TBL WITH DISTRIBUTION AND DETAILED …


3
PostgreSQL初始数据库大小
我的问题分为两部分。 有没有一种方法可以在PostgreSQL中指定数据库的初始大小? 如果没有,当数据库随着时间增长时如何处理碎片? 我最近从MSSQL迁移到Postgres,在创建数据库时我们在MSSQL世界中所做的一件事是指定数据库和事务日志的初始大小。这样可以减少碎片并提高性能,尤其是如果事先知道数据库的“正常”大小时。 数据库的性能随着大小的增长而下降。例如,我要处理的工作量通常需要10分钟。随着数据库的增长,这个时间增加了。进行VACUUM,VACUUM FULL和VACUUM FULL ANALYZE似乎无法解决问题。解决性能问题的方法是停止数据库,对驱动器进行碎片整理,然后进行VACUUM FULL ANALYZE,将测试的性能恢复到最初的10分钟。这使我怀疑碎片化是导致我疼痛的原因。 我在Postgres中找不到任何有关保留表空间/数据库空间的引用。我使用的术语错误,因此一无所获,或者在Postgres中有另一种缓解文件系统碎片的方法。 有指针吗? 解决方案 提供的答案有助于确认我开始怀疑的地方。PostgreSQL将数据库存储在多个文件中,这使数据库可以增长而无需担心碎片。默认行为是将这些文件与表数据一起打包到边缘,这对很少更改的表有好处,但对经常更新的表不利。 PostgreSQL利用MVCC提供对表数据的并发访问。在此方案下,每次更新都会创建已更新行的新版本(可以通过时间戳或版本号,谁知道呢?)。旧数据不会立即删除,但会标记为删除。实际删除发生在执行VACUUM操作时。 这与填充因子有何关系?表格默认填充因子100完全填满了表格页面,这又意味着表格页面中没有空间来容纳更新的行,即,更新的行将与原始行放置在不同的表格页面中。如我的经验所示,这对性能不利。由于汇总表的更新非常频繁(最高1500行/秒),因此我选择将填充因子设置为20,即表的20%用于插入的行数据,而80%用于更新数据。尽管这看起来可能过多,但为更新的行保留的大量空间意味着更新的行与原始行位于同一页面内,并且在自动清理守护程序运行以删除过时的行时,表页面未满。 为了“修复”我的数据库,我做了以下工作。 将摘要表的填充因子设置为20。您可以在创建时通过将参数传递给CREATE TABLE或在事后通过ALTER TABLE来实现。我发出了以下plpgsql命令:ALTER TABLE "my_summary_table" SET (fillfactor = 20); 发出VACUUM FULL,因为这将写入表文件的全新版本,因此,暗含了使用新的填充因子写入新的表文件的情况。 重新运行测试,即使数据库足够大以容纳数百万行,我也看不到性能下降。 TL; DR-不是文件碎片造成的,而是表空间碎片造成的。通过调整表格的填充因子以适合您的特定用例,可以缓解这种情况。

1
MySQL Workbench数据库大小
我正在尝试查找所有MySQL Workbench数据库正在使用的硬盘上的总大小。 有谁知道解决这个问题的简便方法? 如果没有其他要求,mysql / workbench的默认位置用于将原始数据保存在Windows计算机上吗? 提前致谢!昆蒂斯

4
按表格显示数据和磁盘使用明细
我有一个SQL Server 2008 R2数据库,已由多个已部署程序使用。 问题:是否有一种简单的方法来显示数据库中所有表的每个表占用多少空间,并区分逻辑空间和磁盘空间? 如果我使用SSMS(Management Studio),则显示的数据库存储属性为167 MB,其中“可用”为3 MB(大约正确的大小,但我担心可用的3 MB)-这是一个值得关注的限制吗,假设我知道我有足够的磁盘空间?) 我可以深入研究每个表格,但这需要永远做。 我知道我可以编写自己的查询并进行测试,但是我想知道是否已经有一种简便的方法(内置的?)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.