`
victorwmh
  • 浏览: 212827 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

MyISAM中key_buffer_size

EXT 
阅读更多

MyISAM中key_buffer_size的设置

 

一直以来,多数人在使用MyISAM时都是按照增大Key_read_requests / Key_reads的原则来设置key_buffer_size的,没想到这竟然是错误的!

 

Key_read_requests和Key_reads就是两个计数器,它们的含义如下:

 

Key_read_requests:从缓存读取索引的请求次数。

Key_reads:从磁盘读取索引的请求次数。

 

通常人们认为Key_read_requests / Key_reads越大越好,否则就应该增大key_buffer_size的设置,但通过计数器的比例来调优有两个问题:

 

问题一:比例并不显示数量的绝对值大小

问题二:计数器并没有考虑时间因素

 

虽说Key_read_requests大比小好,但是对于系统调优而言,更有意义的应该是单位时间内的Key_reads:

 

Key_reads / Uptime

 

你可以通过命令行得到一个实时的数据结果,比如:

 

# mysqladmin ext -ri10 | grep Key_reads

 

| Key_reads                         | 83777189      |

| Key_reads                         | 211           |

| Key_reads                         | 177           |

| Key_reads                         | 202           |

 

 

提示:命令里的mysqladmin ext其实就是mysqladmin extended-status,你甚至可以简写成mysqladmin e。

 

其中第一行表示的是汇总数值,所以这里不必考虑,下面的每行数值都表示10秒内的数据变化,从这份数据可以看出每10秒系统大约会出现200次Key_reads访问,折合到每1秒就是20次左右,至于这个数值到底合理与否,就由服务器的磁盘能力而定了。

 

顺便说一句,为啥数据按10秒取样,而不是直接按1秒取样?这里看看按1秒的结果:

 

# mysqladmin ext -ri1 | grep Key_reads

 

| Key_reads                         | 83776743      |

| Key_reads                         | 7             |

| Key_reads                         | 7             |

| Key_reads                         | 38            |

 

可以看到,由于时间段过小,数据变化比较剧烈,不容易直观估计大小,所以通常数据按照10秒或者60秒之类的时间段来取样是更好的。

 

忘记:Key_read_requests / Key_reads

牢记:Key_reads / Uptime

分享到:
评论

相关推荐

    优化mysql之key_buffer_size设置

    key_buffer_size key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,...key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值c

    mysql Key_buffer_size参数的优化设置

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

    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优化中的内存计算公式

    - **Key Buffer Size**: 用于存储MyISAM表索引的数据缓存区。 - **Query Cache Size**: 存储SQL查询结果的缓存区。 - **InnoDB Buffer Pool Size**: InnoDB引擎用来缓存数据页和索引页的内存池。 - **InnoDB ...

    MySQL_OCP5.7带讲解.pdf

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

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

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

    my.cnf-调优

    7. **key_buffer_size**: 对于MyISAM表较多的情况,可以适当增大。 8. **innodb_additional_mem_pool_size**: 根据实际情况调整,特别是对于复杂查询较多的应用。 9. **thread_concurrency**: 一般设置为CPU核心数或...

    MySQL8.0内存相关参数总结

    6. **key_buffer_size**: 对于MyISAM存储引擎,这是用来缓存索引的关键参数。在InnoDB为主的情况下,MyISAM引擎的使用较少,但仍需关注。 7. **thread_stack**: 每个线程的栈大小,通常不需要调整,除非遇到...

    MYSQL数据库技术分享.ppt

    key_buffer_size参数用于设置MyISAM引擎存放索引数据文件的缓冲区大小。但是,现在我们默认使用InnoDB引擎,因此该参数很少使用。 MYSQL数据库参数优化 MYSQL数据库参数优化是提高MYSQL数据库性能的重要手段。常用...

    mysql-linux版详细安装教程

    myisam_sort_buffer_size=134217728 thread_cache_size=64 tmp_table_size = 512M max_heap_table_size = 512M skip-log-bin lower_case_table_names=1 tmpdir=/data/tmp foreign_key_checks=0 max_allowed_packet =...

    MySQL数据库服务器优化详细

    - **`key_buffer_size`**:专门用于MyISAM表索引的缓存大小。通过监控`Key_read_requests`和`Key_reads`状态变量的比例,确保索引命中率高,减少磁盘I/O操作。 - **`innodb_buffer_pool_size`**:InnoDB存储引擎的...

    mysql myisam 优化设置设置

    7. **key_buffer_size**: MyISAM存储引擎使用Key Cache来缓存索引,增大`key_buffer_size`可以提高索引读取的速度。MySQL 8.0引入了热冷缓存的概念,分别用`hot_cache.key_buffer_size`和`cold_cache.key_buffer_...

    mysql存储引擎优化[收集].pdf

    - `key_buffer_block_size`:设置每个Cache Block的大小,同时也影响从`.MYI`文件中读取的File Block大小。 - `key_cache_division_limit`:定义了LRU链表中热区(Hot Area)和温区(Warm Area)的划分阈值。MySQL...

    mysql数据库配置模板

    - **key_buffer_size**/**read_buffer_size**/**read_rnd_buffer_size**: 分别用于索引缓冲、顺序读取缓冲、随机读取缓冲的大小。 - **bulk_insert_buffer_size**: 批量插入操作时使用的缓冲区大小。 - **myisam_...

Global site tag (gtag.js) - Google Analytics