pangyf10
火狐狸
火狐狸
  • UID48425
  • 注册日期2014-12-30
  • 最后登录2023-01-08
  • 发帖数202
  • 经验206枚
  • 威望0点
  • 贡献值70点
  • 好评度9点
  • 社区居民
  • 忠实会员
阅读:2715回复:14

firefox删除大量历史记录时非常卡

楼主#
更多 发布于:2015-12-22 16:42
firefox删除大量历史记录时非常卡。
尤其是数量达到10000后,不知为何firefox是300条300条的删除,数量一旦上万,开头每300条卡个10分钟都可能。处理器3代i3,还跟的上时代。
是sqlite的问题,还是firefox的问题?

最新喜欢:

livelifeliveli...
pangyf10
火狐狸
火狐狸
  • UID48425
  • 注册日期2014-12-30
  • 最后登录2023-01-08
  • 发帖数202
  • 经验206枚
  • 威望0点
  • 贡献值70点
  • 好评度9点
  • 社区居民
  • 忠实会员
1楼#
发布于: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方面应该没有问题。
pangyf10
火狐狸
火狐狸
  • UID48425
  • 注册日期2014-12-30
  • 最后登录2023-01-08
  • 发帖数202
  • 经验206枚
  • 威望0点
  • 贡献值70点
  • 好评度9点
  • 社区居民
  • 忠实会员
2楼#
发布于:2015-12-23 14:38
pcxfirefox:好吧 我说下简单的解决方案 直接基于Sqlite来删除 我一般都是这样大规模删减的

为方便起见(你可以用别的工具),使用这个扩展https://addons.mozilla.org/zh-CN/firefox/addon/sqlite-m...
回到原帖

不错的办法。
以前没有发现compact功能。。。
pangyf10
火狐狸
火狐狸
  • UID48425
  • 注册日期2014-12-30
  • 最后登录2023-01-08
  • 发帖数202
  • 经验206枚
  • 威望0点
  • 贡献值70点
  • 好评度9点
  • 社区居民
  • 忠实会员
3楼#
发布于:2015-12-23 16:41
yfdyh000:可能是操作数据库的方式很笨(频繁检查/循环/逐个操作,并会逐个保存),也可能是非异步被UI更新阻止了。没研究过,只是猜测。回到原帖
这个可能和情景有关。
当我通过firefox来删除历史记录的时候,过程是先选择一个时间的历史记录(firefox似乎不能选中所有记录),然后按访问次数排序,然后选中低于某一个数的所有记录,然后删除。这种方式下firefox一般的逻辑可能是按我选中的记录(或者搜索的记录),一条一条(通过名字吧,一般不会是id吧,毕竟我在选择的时候只能看到名字这些东西,而不是数据库操作的抽象的东西),这样就每一次删除都必须经过不同的搜索、删除。
但是当直接操作数据库的时候,可以明确条件,一次性检索出来,一次性删除。
情景设计上firefox不知道我选择的上万条记录是有内在联系的,但操作数据库的时候我可以告诉数据库。这样一个是一万次独立操作,一个单次的操作。差别就很大了。

如果是这样的话就建议firefox增强一下历史记录的管理。增加一些逻辑性的选择,比如我这种删除仅仅访问过一次的记录,以及给访问记录设个上限(我不觉得一个网站被记录500次和500万次有什么区别,使用上都会马上被检索到),或者有一定的自动删除功能等等。
pangyf10
火狐狸
火狐狸
  • UID48425
  • 注册日期2014-12-30
  • 最后登录2023-01-08
  • 发帖数202
  • 经验206枚
  • 威望0点
  • 贡献值70点
  • 好评度9点
  • 社区居民
  • 忠实会员
4楼#
发布于:2015-12-23 16:54
yfdyh000:嗯,应该就是这样,非全选状态变成遍历了,而且算法设计很差,变成了若干次查询和提交数据库。肯定是通过ID吧,列表项可以有隐藏数据的。回到原帖
由于呈现在我们面前的是一个已经经过查询的结果,而不是数据库中的一个表。当我们选择某一项,或者某几项的时候,或许简单的逻辑以及实现是根据我们提供的信息,也就是展现在我们眼前的信息中的一部分,再去表中查询,以此来确认我们选中的到底是哪个表中的哪些项。这个情景本身就比较复杂。相对于在数据库中,我们直接看到表的时候本身没有经过这些复杂的过程,就是依据表、id这些抽象的东西直接处理,就快很多。
游客

返回顶部