gpt4 book ai didi

mysql - MySQL 中的 "CACHE INDEX"和 "LOAD INDEX INTO CACHE"

转载 作者:可可西里 更新时间:2023-11-01 06:33:49 24 4
gpt4 key购买 nike

MySQL documentation意味着您可以将表的一个或多个索引分配给命名的键缓冲区(并预加载它们)。手册中的语法定义是:

CACHE INDEX
tbl_index_list [, tbl_index_list] ...
IN key_cache_name

tbl_index_list:
tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]

这似乎是说您可以只将一个表的索引分配给指定的键缓冲区。例如:

SET GLOBAL my_keys.key_buffer_size=512*1048576;
CACHE INDEX my_table KEY (PRIMARY) INTO my_keys;
LOAD INDEX INTO CACHE my_table KEY (PRIMARY);

只会加载 my_table 的主索引。

但据我所知,它不是那样工作的,至少在 5.0.87 中不是这样。相反,服务器似乎加载了表的所有索引,实际上忽略了括号中的索引列表部分。

比如我有一个很大的字典表:

CREATE TABLE dict (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(330) NOT NULL,
UNIQUE KEY (name) );

现在,如果我尝试只加载 PRIMARY 索引,mysqld 在内存中的常驻大小会增加 dict.MYI 的大小(在我的示例中为 733 MB),这比单独的 PRIMARY 索引的大小(103 MB)。


2011-01-08 更新:documentation for CACHE INDEX实际上提供了答案:

The syntax of CACHE INDEX enables you to specify that only particular indexes from a table should be assigned to the cache. The current implementation assigns all the table's indexes to the cache, so there is no reason to specify anything other than the table name.

如果我能正确阅读我在 OP 中引用的文档,那么这一切都不会发生。

最佳答案

fsb 对那些错过更新的人的问题的回答。

The syntax of CACHE INDEX enables you to specify that only particular indexes from a table should be assigned to the cache. The current implementation assigns all the table's indexes to the cache, so there is no reason to specify anything other than the table name.

关于mysql - MySQL 中的 "CACHE INDEX"和 "LOAD INDEX INTO CACHE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528325/

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