我应该在哈希图中保存一个数据库表以加快我的程序吗

Posted

技术标签:

【中文标题】我应该在哈希图中保存一个数据库表以加快我的程序吗【英文标题】:should i save a db table in a hash map to speed up my program 【发布时间】:2011-08-24 11:20:46 【问题描述】:

我有一个访问设备的轮询循环,其中一些设备链接在一起,因此当其中一个链接设备被轮询时,其状态必须复制到另一个链接设备。

我正在尝试加快更新第二个链接设备的过程。如果设备 4 链接到设备 5,则速度很快,但如果轮询设备 5 并发现更改,则必须等到轮询循环完成并再次启动。

我的想法是作为投票的一部分检查设备是否已链接,以便可以立即更新。有关链接哪些设备的信息存储在数据库中,并且每次轮询都调用数据库会显着减慢系统我认为所以我想做的是创建表的哈希表并检查它。

这是我的问题

    这个想法行得通吗?

    哈希表会比数据库检查更快吗?

    我应该多久重新创建一次哈希表,程序将一次运行数周?

    这是最好的方法吗?还有其他方法可以加快轮询循环吗?

【问题讨论】:

【参考方案1】:

如果优先考虑搜索,请使用哈希表。哈希表在键搜索时提供非常快速的搜索机制,在按值搜索时提供相当好的搜索 如果您希望能够删除特定元素,请使用哈希表(使用 Remove 方法) 当元素的存储顺序与您无关时,请使用哈希表。 如果您需要某些特定顺序的元素,请不要使用哈希表。您不能依赖 Hashtable 如何对其元素进行排序 如果您需要在特定位置插入元素,请不要使用哈希表 如果要存储具有相同值的多个键,请不要使用哈希表。哈希表中的所有键都必须是唯一的。

【讨论】:

从实现的角度来看,我实际上会坚持使用类 HashMap 而不是 HashTable。 (如果你想保证它是唯一值的“集合”,还有 HashSet)。

以上是关于我应该在哈希图中保存一个数据库表以加快我的程序吗的主要内容,如果未能解决你的问题,请参考以下文章

如何生成波形表以加快实时音频合成

基于 mysql 视图结果创建表以加快获取速度

Java:哈希图中的复合键

如何在保存到数据库之前对密码进行哈希处理以与护照模块兼容(本地护照)

在使用 oracle apex 加载数据时,我应该查找其他表以匹配 id 并提取列值

如何加快从数据库中保存文件