-
命令行格式 --key-buffer-size=#
系统变量 key_buffer_size
范围 全球的 动态的 是的 类型 整数 默认值 8388608
最小值 8
最大值(64 位平台) OS_PER_PROCESS_LIMIT
最大值(32 位平台) 4294967295
MyISAM
表的 索引块被缓冲并由所有线程共享。key_buffer_size
是用于索引块的缓冲区的大小。密钥缓冲区也称为密钥缓存。key_buffer_size
在 32 位平台上 允许的最大设置为 4GB-1。64 位平台允许使用更大的值。有效的最大大小可能更小,具体取决于操作系统或硬件平台施加的可用物理 RAM 和每个进程的 RAM 限制。此变量的值表示请求的内存量。在内部,服务器分配尽可能多的内存,最多可达此数量,但实际分配可能更少。您可以增加该值以获得更好的所有读取和多次写入的索引处理;在主要功能是使用 MySQL 运行 MySQL 的系统上
MyISAM
存储引擎,机器总内存的 25% 是此变量的可接受值。但是,您应该注意,如果您将该值设置得太大(例如,超过机器总内存的 50%),您的系统可能会开始分页并变得极其缓慢。这是因为 MySQL 依赖操作系统对数据读取进行文件系统缓存,所以必须为文件系统缓存留出一些空间。您还应该考虑除MyISAM
.为了在同时写入多行时获得更高的速度,请使用
LOCK TABLES
. 请参阅 第 8.2.4.1 节,“优化 INSERT 语句”。您可以通过发出检查键值缓冲区的性能
SHOW STATUS
声明和检查Key_read_requests
,Key_reads
,Key_write_requests
,和Key_writes
状态变量。(请参阅第 13.7.5 节,“SHOW 语句”。)该Key_reads/Key_read_requests
比率通常应小于 0.01。Key_writes/Key_write_requests
如果您主要使用更新和删除,则该比率通常接近 1,但如果您倾向于同时执行影响多行的更新,或者使用DELAY_KEY_WRITE
表选项,则该 比率可能会小得多 。可以
key_buffer_size
结合Key_blocks_unused
状态变量和缓冲区块大小(可从key_cache_block_size
系统变量获得)来确定正在使用的密钥缓冲区的比例 :<span style="background-color:#f8f8f8"><span style="color:#000000"><code class="language-simple">1 <span style="color:#a67f59">-</span> <span style="color:#999999">(</span><span style="color:#999999">(</span>Key_blocks_unused <span style="color:#a67f59">*</span> key_cache_block_size<span style="color:#999999">)</span> <span style="color:#a67f59">/</span> key_buffer_size<span style="color:#999999">)</span></code></span></span>
该值是一个近似值,因为密钥缓冲区中的一些空间是在内部为管理结构分配的。影响这些结构的开销量的因素包括块大小和指针大小。随着块大小的增加,因开销而丢失的密钥缓冲区的百分比趋于降低。较大的块导致较少数量的读取操作(因为每次读取获得更多的键),但相反,未检查的键的读取会增加(如果不是块中的所有键都与查询相关)。
可以创建多个
MyISAM
密钥缓存。4GB 的大小限制单独应用于每个缓存,而不是作为一个组。
mysql 参数 key_buffer_size
最新推荐文章于 2021-11-27 11:12:00 发布
key_buffer_size是MySQL中用于MyISAM存储引擎索引块缓存的大小,影响读写性能。合理的设置可以提高读取和多写入操作的速度。一般建议不超过系统总内存的25%,以避免影响操作系统和其他服务的性能。通过SHOW STATUS可以监控其性能,理想情况下Key_reads/Key_read_requests比率应小于0.01。可以创建多个MyISAM键缓存,每个缓存的大小限制为4GB。
摘要由CSDN通过智能技术生成