阅读:3159回复:14
firefox删除大量历史记录时非常卡
firefox删除大量历史记录时非常卡。
尤其是数量达到10000后,不知为何firefox是300条300条的删除,数量一旦上万,开头每300条卡个10分钟都可能。处理器3代i3,还跟的上时代。 是sqlite的问题,还是firefox的问题? |
|
最新喜欢:liveli... |
1楼#
发布于:2015-12-22 17:00
2年前就报告了 包含了2个问题
1) 算法问题 删除算法太慢 2)可恶的巨大的wal文件 产生额外的高IO占用 |
|
|
2楼#
发布于:2015-12-22 17:32
补充,楼上说的应该是这个 https://bugzilla.mozilla.org/show_bug.cgi?id=734643 及其依赖。
|
|
3楼#
发布于:2015-12-22 18:13
yfdyh000:补充,楼上说的应该是这个 https://bugzilla.mozilla.org/show_bug.cgi?id=734643 及其依赖。回到原帖https://bugzilla.mozilla.org/show_bug.cgi?id=1117546。今年还有人继续提出呢。看了下最晚06年就有相关问题。 此外我这里是固态硬盘,io方面应该没有问题。 |
|
4楼#
发布于:2015-12-22 18:34
|
|
5楼#
发布于:2015-12-23 10:00
CPU和磁盘占用率都比较高
|
|
|
6楼#
发布于:2015-12-23 11:44
我的是完全動不了,都是用CCleaner來清理的
|
|
7楼#
发布于:2015-12-23 12:59
好吧 我说下简单的解决方案 直接基于Sqlite来删除 我一般都是这样大规模删减的
为方便起见(你可以用别的工具),使用这个扩展https://addons.mozilla.org/zh-CN/firefox/addon/sqlite-manager/ 打开SQLite Manager 定位到places.sqlite 点击Go 左边就会出现数据库中所有的表 选择你想要清空的表 比如历史记录是moz_historyvisits 右键选择Empty即可 如果部分删除 可以在右侧选择 还可以在Excute SQL中输入你想要执行的SQL语句 进行精确批量删除 清除其他东西同理 最后使用SQLite Manager菜单的Database里的Compact即可 |
|
|
8楼#
发布于:2015-12-23 14:38
pcxfirefox:好吧 我说下简单的解决方案 直接基于Sqlite来删除 我一般都是这样大规模删减的 不错的办法。 以前没有发现compact功能。。。 |
|
9楼#
发布于:2015-12-23 15:40
pcxfirefox:好吧 我说下简单的解决方案 直接基于Sqlite来删除 我一般都是这样大规模删减的既然lz用SSD, 物理方面没问题;你的方法直接操作数据库, 也没有问题...为啥由fx来做同样的事情就慢如龟爬了.... |
|
|
10楼#
发布于:2015-12-23 15:54
|
|
11楼#
发布于:2015-12-23 16:41
yfdyh000:可能是操作数据库的方式很笨(频繁检查/循环/逐个操作,并会逐个保存),也可能是非异步被UI更新阻止了。没研究过,只是猜测。回到原帖这个可能和情景有关。 当我通过firefox来删除历史记录的时候,过程是先选择一个时间的历史记录(firefox似乎不能选中所有记录),然后按访问次数排序,然后选中低于某一个数的所有记录,然后删除。这种方式下firefox一般的逻辑可能是按我选中的记录(或者搜索的记录),一条一条(通过名字吧,一般不会是id吧,毕竟我在选择的时候只能看到名字这些东西,而不是数据库操作的抽象的东西),这样就每一次删除都必须经过不同的搜索、删除。 但是当直接操作数据库的时候,可以明确条件,一次性检索出来,一次性删除。 情景设计上firefox不知道我选择的上万条记录是有内在联系的,但操作数据库的时候我可以告诉数据库。这样一个是一万次独立操作,一个单次的操作。差别就很大了。 如果是这样的话就建议firefox增强一下历史记录的管理。增加一些逻辑性的选择,比如我这种删除仅仅访问过一次的记录,以及给访问记录设个上限(我不觉得一个网站被记录500次和500万次有什么区别,使用上都会马上被检索到),或者有一定的自动删除功能等等。 |
|
12楼#
发布于:2015-12-23 16:47
|
|
13楼#
发布于:2015-12-23 16:54
|
|
14楼#
发布于:2015-12-23 16:57
dba说,你的sqlite需要建索引。。。。^_^
|
|
|