前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql学习笔记(八)- 服务器优化之MyIsam

Mysql学习笔记(八)- 服务器优化之MyIsam

作者头像
写一点笔记
发布2020-12-15 09:58:44
4290
发布2020-12-15 09:58:44
举报
文章被收录于专栏:程序员备忘录程序员备忘录

Mysql作为数据库在不同的机器和不同的业务环境中具有不同的调优方式,和我们做任何事情一样,涉及到边界确定的就是我们需要关注的。所有了解mysql实现的边界参数是我们调优的重点。

mysql有七组后台线程,分别为一个主线程,4个io线程,一个锁线程和一个错误监控线程。mysql5.5之后还添加了purge线程。

代码语言:javascript
复制
master thread主要负责将脏缓存页刷新到数据文件,执行purge操作,触发检查点。合并插入缓冲区。
insert buffer thread 主要负责插入缓冲区的合并操作
read thread 负责数据库的读操作,可配置多个读线程。
write thread 负责数据库的写操作,可配置多个写线程
log thread 用户将重做日志刷新到logfile中
 purge thread执行purge操作。
  lock thread 负责锁控制和死锁检测。
错误线程 负责错误监控和处理。

我们可以使用show engine innodb status来查看这些线程的状态

mysql内存管理以及优化原则

内存优化的原则,在调整mysql内存分配时,要注意以下几点: 1.将尽量多的内存分配给mysql做缓存,弹药给操作系统和其他程序运行预留足够的内存,否则如果产生swap页交换,将严重影响系统性能 2.mysqlisam数据文件读取依赖于操作系统自身的io缓存,因此如果有myisam表,要预留更多的内存给操作系统做io缓存。 3.排序区,连接区等缓存是分配给每个数据连接会话专用的,其默认值得设置要根据最大连接数合理配置,如果设置的太大,不但浪费资源,在高并发的时候会快速将内存耗尽。

myisam内存优化

myisam存储引擎使用key buffer缓存索引块,对于mysiam表,mysql没有专门的缓存,完全依赖于操作系统的io缓存。

1.key_buffer_size的扩容

决定myisam索引缓存区的大小,影响myisam表的存取效率。可以在mysql参数文件中设置该值,一般对于myisam表,建议将1/4的内存分配给key_buffer_size

2.使用多个索引缓存

mysql通过session共享key buffer提高了myisam索引存取的性能,但是并不能消除session之间对key buffer的竞争,比如一个session如果对某个很大的索引进行扫描就可能将其他的所有数据挤出索引块,而这些索引块可能是其他session要用的数据,为了减少会话对key_buffer的竞争,mysql自5.1版本开始引入了多索引缓存的机制。

3.调整中点插入策略

某些情况下,mysql使用的是简单的最少使用策略淘汰索引数据块,这种方式可能会淘汰热数据块。除了使用会话缓存机制外还可以通过修改淘汰策略的方式。lru策略是通过构建两个链表,分别是hot链、warm链,当一个数据缓存进入内存,会先放到中点位置,也就是warm的尾部,当命中的次数达到一定量的时候会进入hot链,此后一直在hot链中循环,直到超过一定时间后会被放置到warm链的头部,在需要淘汰的时候会从warm头部进行淘汰。我们可以设置warm链和hot链的空间大小来优化缓存淘汰的问题。具体如下:

代码语言:javascript
复制
set global key_cache_division_limit =70
set global hot_cache.key_cache_division_limit=70

这是是设置30%的空间为热点数据区域。

4.调整read_buffer_size和read_rnd_buffer_size

要经常顺序扫描myisam表,可以通过增大read_buffer_size改善性能。但是read_buffer_size是session会话独占的,设置的过大会导致内存耗尽。

对于需要排序的sql,适当的增大read_rnd_buffer_size的值。但是也要考虑内存的问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员备忘录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档