`

调节 key_buffer_size 参数

 
阅读更多
2.2.1 调节 key_buffer_size 参数
2008年10月19日 星期日 17:39
2.2.1 调节 key_buffer_size 参数

为了最小化磁盘的 I/O , MyISAM 存储引擎的表使用键高速缓存来缓存索引,这个键高速缓存的大小则通过 key-buffer-size 参数来设置。如果应用系统中使用的表以 MyISAM 存储引擎为主,则应该适当增加该参数的值,以便尽可能的缓存索引,提高访问的速度。

默认情况下,所有的索引都使用相同的键高速缓存,当访问的索引不在缓存中时,使用 LRU ( Least Recently Used 最近最少使用)算法来替换缓存中最近最少使用的索引块。为了进一步避免对键高速缓存的争用,从 MySQL5.1 开始,可以设置多个键高速缓存,并为不同的索引键指定使用的键高速缓存。下面的例子演示如何修改高速键缓存的值,如何设置多个键高速缓存,以及如何为不同的索引指定不同的缓存:

显示当前的参数大小,为16M:

mysql> show variables like 'key_buffer_size';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| key_buffer_size | 16384 |

+-----------------+-------+

1 row in set (0.00 sec)

修改参数值到200M:

mysql> set global key_buffer_size=204800;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'key_buffer_size';

+-----------------+--------+

| Variable_name | Value |

+-----------------+--------+

| key_buffer_size | 204800 |

+-----------------+--------+

1 row in set (0.00 sec)

上面介绍的是默认的键缓存,下面介绍如何设置多个键缓存:

设置 hot_cache 的键缓存 100M , cold_cache 的键缓存 100M ,另外还有 200M 的默认的键缓存。如果索引不指定键缓存,则会放在默认的键缓存中。

mysql> set global hot_cache.key_buffer_size=102400;

Query OK, 0 rows affected (0.00 sec)

mysql> set global cold_cache.key_buffer_size= 1024 00;

Query OK, 0 rows affected (0.01 sec)

mysql> show variables like 'key_buffer_size';

+-----------------+--------+

| Variable_name | Value |

+-----------------+--------+

| key_buffer_size | 204800 |

+-----------------+--------+

1 row in set (0.00 sec)

如果要显示设置的多键缓存的值,可以使用:

mysql> SELECT @@global.hot_cache.key_buffer_size;

+------------------------------------+

| @@global.hot_cache.key_buffer_size |

+------------------------------------+

| 102400 |

+------------------------------------+

1 row in set (0.03 sec)

mysql> SELECT @@global.cold_cache.key_buffer_size;

+-------------------------------------+

| @@global.cold_cache.key_buffer_size |

+-------------------------------------+

| 102400 |

+-------------------------------------+

1 row in set (0.00 sec)

指定不同的索引使用不同的键缓存:

mysql> CACHE INDEX test1 in hot_cache;

+------------+--------------------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+------------+--------------------+----------+----------+

| test .test1 | assign_to_keycache | status | OK |

+------------+--------------------+----------+----------+

1 row in set (0.00 sec)

mysql> CACHE INDEX test2 in hot_cache;

+------------+--------------------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+------------+--------------------+----------+----------+

| test .test2 | assign_to_keycache | status | OK |

+------------+--------------------+----------+----------+

1 row in set (0.00 sec)

通常在数据库刚刚启动的时候,需要等待数据库热起来,也就是等待数据被缓存到缓存区中,这段时间数据库会因为 buffer 的命中率低而导致应用的访问效率不高。使用键高速缓存的时候,可以通过命令将索引预加载到缓存区中,大大缩短了数据库预热的时间。具体的操作方式是:

mysql> LOAD INDEX INTO CACHE test1,test2 IGNORE LEAVES;

+------------+--------------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+------------+--------------+----------+----------+

| test .test1 | preload_keys | status | OK |

| test .test2 | preload_keys | status | OK |

+------------+--------------+----------+----------+

2 rows in set (3.89 sec)

如果已经使用 CACHE INDEX 语句为索引分配了一个键高速缓冲,预加载可以将索引块放入该缓存,否则,索引块将被加载到默认的键高速缓冲。
分享到:
评论

相关推荐

    mysql Key_buffer_size参数的优化设置

    MySQL数据库的`Key_buffer_size`参数是针对MyISAM存储引擎的一个重要配置,它直接影响到MyISAM表的索引处理性能。MyISAM引擎在MySQL中被广泛使用,尤其在那些读取操作远多于写入操作的场景下,因为它的读取速度相对...

    优化mysql之key_buffer_size设置

    key_buffer_size key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads /key_read_...

    mysql read_buffer_size 设置多少合适

    一个简单的公式可以用来估算合适的值:`key_buffer_size + (read_buffer_size + sort_buffer_size) * max_connections`,这确保了所有连接的缓冲区总和不会超过可用内存的合理比例,避免内存过载。 对于拥有16GB...

    mysql优化的重要参数 key_buffer_size table_cache

    对于使用Myisam存储引擎来说,主要有key_buffer_size和table_cache两个参数。对于InnoDB引擎来说主要还是以innodb_开始的参数,也很好辨认。 查看MySQL参数,可以使用show variables和show status命令查看,前者查看...

    Max-Liuhu#keeplearning#mysql配置文件之线程并发优化innodb_buffer_pool_size1

    MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟

    Mysql优化调优中两个重要参数table_cache和key_buffer

    在这篇文章中,我们将深入探讨两个关键的参数:table_cache和key_buffer_size,它们对MySQL的性能有着显著影响。 table_cache,也称为open_table_cache,是MySQL服务器用于存储已打开的表对象的缓存。当MySQL访问一...

    MySQL不停地自动重启的解决方法

    比如,增大`key_buffer_size`、`read_buffer_size`和`sort_buffer_size`等内存参数,或者限制`max_connections`和`max_threads`,防止过多的连接和线程消耗资源。 5. **检查数据一致性**: 使用`mysqldump --all-...

    MySQL优化中的内存计算公式

    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 + ...

    MySQL_OCP5.7带讲解.pdf

    - MyISAM存储引擎在早期版本中非常流行,由于它的索引缓存是由key_buffer_size控制,所以通常对于MyISAM表来说,合理的配置key_buffer_size可以显著提高性能。 - InnoDB存储引擎自MySQL 5.5起成为默认存储引擎,它是...

    最新单片机仿真 key_lcd

    最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd最新单片机仿真 key_lcd...

    EA_MTDriver_onekey_trade.zip_EA 面板_EA_MTDriver 一键_ea_origin1x4_一

    《EA_MTDriver_onekey_trade.zip:EA 面板与MTDriver一键交易系统详解》 在金融交易领域,特别是外汇市场,MetaTrader 4(MT4)平台因其强大的图表分析和自动化交易功能而广受欢迎。本文将深入探讨“EA_MTDriver_...

    key_scan.rar_KEY_Scan(0)_key scan函数_key_scan_user函数_key_scan函数_s

    标题和描述提到的“key_scan.rar”文件包含了一系列与STM32按键扫描相关的函数,特别是`key_scan`和`key_scan_user`函数,这对于初学者了解如何实现按键输入功能非常有帮助。 首先,我们需要理解按键扫描的基本原理...

    key_retail.bin文件,amiibo加密密钥

    key_retail.bin文件,amiibo加密密钥

    MySQL DBA性能优化文档每天必看

    Key_buffer_size 是对 MyISAM 表性能影响最大的一个参数。可以使用 show variables like 'key_buffer_size' 语句来查看 key_buffer_size 的值。然后,可以使用 show global status like 'key_read%' 语句来查看 key_...

    USER_KEY_RECYCLED(解决方案).md

    USER_KEY_RECYCLED(解决方案).md

Global site tag (gtag.js) - Google Analytics