问题标签 [defragmentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1151 浏览

select - H2 优化选择语句/关闭碎片整理

测试用例:

1.下面的select语句最多需要30秒。有没有办法优化响应时间?

2.我试过关机碎片整理。但是对于我的测试用例来说,这个语句大约需要 40 分钟。关闭碎片整理后,选择最多需要 15 秒。如果我再次执行该语句,则需要不到 1 秒。即使停止和启动服务器,该语句也需要大约 1 秒。H2 有持久缓存吗?

基础设施:WebBrowser <-> H2 控制台服务器 <-> H2 DB:h2 1.3.158

0 投票
3 回答
737 浏览

perl - 无法从 Windows 2008 上的 perl 脚本调用碎片整理

我想运行一个在 Windows 上运行 defrag 命令的 perl 脚本。当我尝试使用

我得到“'defrag' 未被识别为内部或外部命令、可运行程序或批处理文件”。即使我给出了 C:\Windows\System32\defrag.exe 的完整路径,我也会得到同样的错误。此外,任何对 defrag.exe 是否存在的测试都会失败。例如:

都失败了。事实上,它们在测试任何 .exe 文件时都会失败。这在 Windows 2003 上运行良好,有谁知道为什么它不再在 Windows 2008 上运行?

谢谢!

克里斯

更新:反斜杠最初没有转义。固定的。

0 投票
1 回答
697 浏览

windows - 在 C#.NET 项目中添加 DLL 文件作为参考


我目前正在开发一个在 Microsoft Windows 环境中执行磁盘碎片整理的项目。为此,我想使用 Windows 碎片整理实用程序的内置功能。我在某处读到 Windows 使用“dfrgres.dll”文件执行碎片整理。所以,我想在我的项目中添加“dfrgres.dll”文件作为参考。但我不能这样做。这是我在尝试将指定的 DLL 添加到我的项目时收到的错误消息:

“无法添加对 '...\dfrgres.dll' 的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件”

请告诉我问题出在哪里......或者有没有其他方法可以做到......???互联网上是否有任何其他开源资源可用于碎片整理......???

问候,
难以捉摸的先生

0 投票
1 回答
324 浏览

c++ - 可以在 Knuth 堆上进行碎片整理吗?

我正在考虑是否可以消除 Knuth 内存堆上的外部碎片?在尝试解决这个问题之前,我不确定我们是否可以在堆上移动块。如果我们可以移动块,那么我相信解决外部碎片是微不足道的。

我对这个问题做了一些思考。如果我只是将所有内容复制到新位置(虚拟地址),然后将之前指向该块的所有指针更新为新地址,会有什么问题?我认为这可能是一个正确的解决方案,但我不是很自信。

有人对这个问题有任何想法吗?

提前致谢。

0 投票
3 回答
1135 浏览

c# - 如何使用 C# 获取碎片整理分析

我目前正在使用 C# (.NET 4.0) 开发一个应用程序,该应用程序应该具有确定特定卷上碎片百分比的能力作为其功能的一部分。所有其他功能都已经过测试并且工作正常,但我在尝试访问这些数据时遇到了障碍。理想情况下,我更喜欢使用 WMI,因为它与我用于其他功能的格式相匹配,但此时我愿意使用任何可以有效集成到应用程序中的东西,即使我必须使用 RegEx 过滤数据。我目前正在 Windows 7 Professional (x64) 机器上进行开发。我已经使用管理员权限测试了以下 Powershell 代码段,它可以完美运行。

这是我在 C# 中用来完成同样事情的方法,但 InvokeMethod 不断返回 11 (0xB)。

我什至在 app.manifest 中添加了以下行,但仍然没有。

有人可以告诉我我忽略了什么吗?失败不是我的选择,所以如果不能使用 C# 完成,我不介意用另一种语言创建 DLL(即使我必须学习它),这会给我我需要的结果。理想情况下,应用程序应该能够在 XP 以上的任何操作系统上运行,并且必须对用户完全透明。

这些是我已经使用的资源。我也想在 msdn 上添加 jeffrey_wall 博客,但作为新用户,我一次只能添加 2 个超链接。再次感谢。

http://www.codeproject.com/Messages/2901324/Re-the-result-of-DefragAnalysis-method-in-csharp.aspx

http://social.technet.microsoft.com/Forums/vi-VN/winserverfiles/thread/9d56bfad-dcf5-4258-90cf-4ba9247200da

0 投票
2 回答
978 浏览

c++ - CRT 内存分配

我们的应用程序分配几何坐标的大 std::vector<> -
它必须是一个向量(这意味着连续),因为它最终发送到 OpenGL 以绘制模型。
Open GL 可以处理连续数据。
在某些时候分配失败,这意味着保留内存会引发 std::bad_alloc 异常。但是,此时仍有大量内存可用。
问题是无法分配连续块。
所以第一个两个问题是:

  • 有没有办法控制 CRT 分配内存的方式?或者一种对其进行碎片整理的方法(疯狂的想法))..

  • 也许有一种方法可以检查运行时是否可以分配一定大小的内存块(不使用 try/catch)。

上述问题通过将这个大向量分割成几个向量并为每个向量调用一次 OpenGL 得到了部分解决。
然而,如何定义每个较小向量的大小仍然存在一个问题——如果有很多大小相当小的向量,我们几乎可以肯定适合内存,但会有很多对 OpenGL 的调用,这会减慢可视化速度。

0 投票
1 回答
1296 浏览

file - 如何在写入数百个数兆字节的文件时避免文件碎片?

我的问题类似于如何避免硬盘碎片?,但我每天将生成数百个文件,大小从 2 MB 到 100+ MB 不等(提问者暗示他的文件较小,因为他更担心磁盘混乱,我的问题是读取这些文件的性能)。这些文件一次写入一点点(记录数据),这是创建碎片的最佳方式。(数据库不是一个选项。)我有代码在它们完全编写后进行碎片整理,但是在同一天读回文件时性能会受到影响。

似乎如何在使用 .NET 时限制文件碎片?; 尽管他们缺乏细节(而且我在 C++ 中)。我会使用 SetFilePointerEx() 和 SetEndOfFile() 将文件大小设置为 2MB,然后当文件达到分配的大小时,我将根据观察到的增长率调整大小。然后在写入完成后,调整为实际数据大小。

我看到的一个陷阱(实际上是http://www.cplusplus.com/forum/windows/22114/指出的)是如果我的应用程序崩溃或计算机关闭会发生什么。现在我的文件中有未确定的数据,无法通过 Windows 检测到它。这建议我创建一个文件来跟踪每个文件或单个文件写入了多少数据。有更好的策略吗?也许在每次写入后写入足够的零以便以后检测(然后备份以准备下一次写入)?

你看到我错过的任何其他陷阱吗?

0 投票
1 回答
1163 浏览

mysql - 如何防止 MySQL 数据文件的碎片化?

我认为这个问题被问了很多次,但是搜索它我只发现一些回复中的一些注释。
我知道文件通常由 OS+文件系统处理,但是有(或应该有)方法来改变它。其他大型数据库系统至少使用文件预分配并通过添加大块来增长。据我所知,MySQL 缺乏这种类型的功能(或者我的知识已经过时了?),它只能提供OPTIMIZE TABLE对文件内记录的碎片整理,但文件本身可能非常碎片化。

作为一个具体的问题,我有一个应该充当堆栈的表:很多INSERTs 和DELETEs,数据的生命周期很短(从几秒到几小时),堆栈的最大大小是已知的。表会经常被修改——每天数千次,而且还有其他活动表,所以这种情况会随着时间的推移导致磁盘布局非常碎片化。我目前的想法是预先分配整个堆栈表,然后使用顶部索引UPDATEs。

无论如何,除了我的具体问题(如果有一个解决方案也很好),有什么方法可以减少甚至消除 MySQL 数据文件的碎片整理(如果可能的话),MyISAM 和 InnoDB,最好是在 *nix 系统上? 原始设备至少是 InnoDB 的解决方案吗 ?

0 投票
1 回答
341 浏览

heap-memory - 对非常大的 db4o 数据库文件进行碎片整理

我有一个非常大 (102gb) 的 db4o .yap 文件,我正在尝试对其进行碎片整理。我不断收到 java 堆空间错误。我可以做些什么来调整设置以防止这种情况发生吗?我已经将 objectCommitFrequency 设置为 10000。我给 java 进程 3 gigs 的内存来运行它,但它仍然崩溃。

0 投票
3 回答
1539 浏览

java - db4o Defragment 删除数据库中的所有对象

我正在使用 db4o 8.0。db4o 数据库文件大小为 21MB。数据库中有以下对象。

我删除了所有 10000 条 PostedMessage。然后我尝试对 db4o 数据库进行碎片整理。以下代码用于碎片整理。

我的期望是 db4oDatabase 文件大小将回到 21 Kb。并且 db4oDatabase 仍将包含 1 个用户对象。然而,运行上述代码后,db4odatabase 完全为空。为什么会这样?

如何避免丢失未删除的其他对象(在本例中为 1 个用户对象)?在 db4o 数据库上进行碎片整理的正确方法是什么?