问题标签 [memory-table]
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.
mysql - mysql,强制限制表中的条目
我在内存表中保存了一些临时数据。我只需要 20 个最近的条目,并且希望数据始终在堆上。我应该如何做到这一点?我确信我对内存表无能为力,但我应该如何处理条目表?每当我想推入一个新值时,我应该添加一个自动增加键并删除最旧的键吗?
mysql - 索引表中的每一列
我有几个关于 MySQL 索引的问题:
1) 索引存储在内存中的表时是否有任何速度增加?
2) 当搜索我在列字段上匹配的表时,索引每一列是否会破坏索引的目的?
非常感谢。
mysql - mysql:内存表达到max_heap_table_size怎么办?
我正在使用 mysql 内存表作为缓存多次读取的数据行的一种方式。我选择了这个替代方案,因为我无法在我的解决方案中使用 xcache 或 memcache。在阅读了有关此主题的mysql 手册和论坛后,我得出的结论是,当表达到其最大内存大小时会引发错误。我想知道是否有办法捕获此错误以截断表并释放内存。我不想提高可以使用的内存限制,我需要一种自动释放内存的方法,以便表可以继续工作。
谢谢。
mysql - 为什么不像 memcached 那样使用 MySQL?
出于同样的原因,在一个应用程序中同时使用 NoSQL 和 RDBMS 是有意义的,对我来说,除了 NoSQL 缓存之外还有一个 RDBMS 缓存是有意义的。
我正在考虑使用带有内存引擎的所有表的 MySQL 服务器。
这种方法有什么警告吗?
澄清一下,我在这里建议仅将 MySQL 服务器用于缓存目的,而不是用于我的应用程序的实际数据存储。
mysql - 小内存表中主键上的简单常量选择非常慢
我有一个大约 650 行、5 MB 数据长度、60 kB 索引长度的 MEMORY 表(所以它非常小)。它有一个 SMALLINT 主(散列)键和大约 90 个其他列(整数、varchars、日期时间,没有 blob 或文本)。(编辑:BIGINT 列上还有一个哈希键。)
我经常(大约每秒 10 次)运行这个查询(来自 PHP):
select * from userek where id={CONST_ID} and kitiltva=0 and kitiltva_meddig<"{CONST_DATETIME}" and inaktiv=0
注意:id
是主键。我需要,*
因为结果在很多不同的地方使用,基本上所有的列都在这里或那里使用。
我的问题是:查询定期变得异常缓慢。大约0.5s
平均,8s
最大。大多数时候它非常快:75%
运行速度比快3ms
,85%
比平均速度快。但15%
它比平均速度13%
慢,比1s
. 所以它的尾巴很长。
我完全不知道是什么原因造成的。有什么想法吗?
mysql - 2台服务器,2个内存表,不同大小
我有两台服务器都运行 MySQL 实例。第一个服务器 1 正在运行 MySQL 5.0.22。另一个 server2 正在运行 MySQL 5.1.58。
当我创建一个内存表server1
并添加一行时,它的大小是立即的8,190.0 KiB
。
当我创建一个内存表server2
并添加一行时,它的大小仍然是 only some bytes
。
这是由 MySQL 版本的差异引起的,还是(希望)这是由于我可以更改的某些设置?
编辑:
我还没有找到这种行为的原因,但我确实找到了解决方法。因此,对于将来的参考,这就是为我解决的问题:
我所有的内存表都是一次制作的,并且从那里开始是只读的。当您向 MySQL 指定表将拥有的最大行数时,它的大小将缩小。以下查询将为您执行此操作。
mysql - 更改 max_heap_table_size 值?
max_heap_table_size 限制为 16 mb,那么我该如何更改此值以及在哪里更改?
mysql - 将数据插入内存表
我创建了一个 MEMORY 表。我想将 MyIsam 表(比如PIN_DETAILS
)中的数据加载到 MEMORY 表(比如PIN_DETAILS_MEMORY
)中。
当我尝试将MyISAM
表的数据转储到 MEMORY 表中时(使用INSERT INTO...SELECT
),只有8190行被复制到内存表中。MyISAM 表中有近 2 条 lacs 记录。我也尝试过更改*max_heap_table_size*,但没有任何运气。你能建议任何解决方案吗?
更新:
我插入数据的 SQL 查询是
mysql - 内存表的主键必须是HASH,为什么?
我想将内存表用作一组队列。
因此,将有一个带有 int 列 a 和 b 的内存表。
查询如下:
SELECT b FROM table WHERE a=? 按 b DESC 限制 1000 排序
我试过这个:
但主键仍然是 HASH:
这是否意味着,我需要
a
为此类查询创建另一个 key()?为什么主键不能是 BTREE 索引?如果我将主键更改为普通键有什么区别?
mysql - 覆盖完整的mysql表
最近我遇到了一个问题,即带有内存引擎的 mysql 表已满,并且插入失败(真的很长的 php 脚本)。我很快就摆脱了它,在我插入之前检查是否已经有很多行并删除它们
但这并不酷。实际上,我希望 mysql 为我做这件事。现在,问题是:
是否有标准的替代 AUTO_INCREMENT,但不是LAST+1
每次都返回,而是LAST+1 (mod N)
. 这将允许使用旧的 ID 列值覆盖行。有没有这样的机制,还是我必须自己实现?
谢谢你。