本文转载自: http://database.51cto.com/art/201010/229939.htm
在mysql数据库中,mysql key_buffer_size是对MyISAM表性能影响最大的一个参数,下面就将对mysql Key_buffer_size参数的设置进行详细介绍,供您参考。
下面一台以MyISAM为主要存储引擎服务器的配置:
mysql> show variables like 'key_buffer_size';
+-----------------+------------+
| Variable_name | Value |
+-----------------+------------+
| key_buffer_size | 536870912 |
+-----------------+------------+
分配了512MB内存给mysql key_buffer_size,我们再看一下key_buffer_size的使用情况:
mysql> show global status like 'key_read%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_read_requests | 27813678764 |
| Key_reads | 6798830 |
+------------------------+-------------+
一共有27813678764个索引读取请求,有6798830个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率:
key_cache_miss_rate = Key_reads / Key_read_requests * 100%
比如上面的数据,key_cache_miss_rate为0.0244%,4000个索引读取请求才有一个直接读硬盘,已经很BT 了,key_cache_miss_rate在0.1%以下都很好(每1000个请求有一个直接读硬盘),如果key_cache_miss_rate在 0.01%以下的话,key_buffer_size分配的过多,可以适当减少。
MySQL服务器还提供了key_blocks_*参数:
mysql> show global status like 'key_blocks_u%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_blocks_unused | 0 |
| Key_blocks_used | 413543 |
+------------------------+-------------+
Key_blocks_unused 表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数,比如这台服务器,所有的缓存都用到了,要么 增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%
相关推荐
MySQL数据库的`Key_buffer_size`参数是针对MyISAM存储引擎的一个重要配置,它直接影响到MyISAM表的索引处理性能。MyISAM引擎在MySQL中被广泛使用,尤其在那些读取操作远多于写入操作的场景下,因为它的读取速度相对...
然而,需要注意的是,`key_buffer_size`只对MyISAM表起作用,即便你并不直接使用MyISAM表,MySQL在处理内部临时磁盘表时依然会用到这个设置。`created_tmp_disk_tables`状态变量可以帮助你了解是否频繁创建磁盘上的...
MySQL中的`read_buffer_size`是一个重要的服务器配置参数,它直接影响到数据库在处理顺序扫描查询时的性能。这个参数定义了当MySQL执行顺序读取操作,例如从磁盘读取数据文件时,用于缓冲数据的内存大小。合适的设置...
对于使用Myisam存储引擎来说,主要有key_buffer_size和table_cache两个参数。对于InnoDB引擎来说主要还是以innodb_开始的参数,也很好辨认。 查看MySQL参数,可以使用show variables和show status命令查看,前者查看...
本文根据作者的一点经验,讨论了Mysql服务器优化中两个非常重要的参数,分别是table_cache,key_buffer_size。 table_cache指示表高速缓存的大小。当Mysql访问一个表时,如果在Mysql表缓冲区中还有空间,那么这个表...
MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟
比如,增大`key_buffer_size`、`read_buffer_size`和`sort_buffer_size`等内存参数,或者限制`max_connections`和`max_threads`,防止过多的连接和线程消耗资源。 5. **检查数据一致性**: 使用`mysqldump --all-...
key_buffer_size是MySQL服务器中的一个重要配置项,它定义了用于缓存MyISAM表索引块的内存大小。这个内存区域也称为键缓存或keycache。 - key_buffer_size仅对MyISAM表的索引块进行缓存,对InnoDB表的索引块不进行...
6. **key_buffer_size**: 对于MyISAM存储引擎,这是用来缓存索引的关键参数。在InnoDB为主的情况下,MyISAM引擎的使用较少,但仍需关注。 7. **thread_stack**: 每个线程的栈大小,通常不需要调整,除非遇到...
mysql_used_mem = key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + max_connections * ( read_buffer_size + ...
2. Key_buffer_size:这个参数指定用于索引的缓冲区大小,增加它可得到更好处理的索引。 3. Query_cache_limit:这个参数指定单个查询能够使用的缓冲区大小,默认 1M。 日志参数 1. Expire_logs_days:这个参数...
在MYSQL数据库中,常用的参数包括innodb_buffer_pool_size、innodb_additional_mem_pool_size、innodb_log_buffer_size、key_buffer_size等。 innodb_buffer_pool_size参数用于设置InnoDB缓存表和索引数据的内存...
Key_buffer_size 是对 MyISAM 表性能影响最大的一个参数。可以使用 show variables like 'key_buffer_size' 语句来查看 key_buffer_size 的值。然后,可以使用 show global status like 'key_read%' 语句来查看 key_...
`mysql> select /*+ set_var(optimizer_switch='index_merge=off') set_var(join_buffer_size=4M) */ c_id from customer limit 1;` 这个新特性可以在查询语句中直接修改会话变量,不需要再进行多个步骤的操作。 ...