gpt4 book ai didi

java - MySQL FIFO 固定最大尺寸

转载 作者:行者123 更新时间:2023-11-30 23:33:56 24 4
gpt4 key购买 nike

我需要创建一个包含 X 个唯一值的列表,每个值代表一个资源。这些唯一值可能有数百万个。

当应用程序需要一个资源时,它会取出具有最低 ID 的值(不是值),使用该资源,一旦完成该资源,通过将其添加到列表的尾部来将值返回到列表.重要的是将资源放在尾部,以确保不会很快再次使用它。

为了防止系统在服务器出现故障时丢失对值的跟踪,正在使用的值被添加到一个简单的 in_use_value 表中。

我的解决方案是在 MySQL 中创建一个循环 FIFO 列表。我有一个包含列表中最大元素数的表,一个用于跟踪列表前面的 header_id 字段,以及一个用于跟踪结尾的 tail_id 字段。 header 和 tail id 字段使用 modula 包装。

例子:

值表

id INT(10) 无符号值 VARCHAR(45)

控制表

max_num_values INT(10)header_id尾号

问题是为了删除或插入一个值,我需要锁定控制表行以安全地更改尾部/标题 ID 字段。由于应用程序是多线程的,所以在控制表上会有很多争用。

对于我是否以正确的方式处理此问题,是否有人有其他想法或建议?我考虑过通过将控制表分成多行映射到每个列表,将表分成多个较小的循环 FIFO 列表,但我不知道如何从控制表中获取随机行,而其中一行是其中一行已锁定。

任何建议将不胜感激。

最佳答案

我建议您查看 java.util.concurrent包裹。你的方法很好,但你需要使用并发队列,以便它与线程很好地配合。

关于java - MySQL FIFO 固定最大尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com