mysql前端的缓存_MySQL缓存分类和配置

读书笔记,待补充完善

MySQL缓存分类

InnoDB缓冲池

InnoDB日志文件和MyIsAM数据的操作系统缓存

MyIsAM键缓存

查询缓存

无法手工配置的缓存,二进制日志,表定义文件的操作系统缓存

其它缓存,通常不需要太多内存

InnoDB缓冲池

作用:

1.缓存的对象包括:数据行,索引,插入缓冲,锁,以及内部数据结构。

2.利用缓冲池来版主延迟写入,可以合并多次写入,顺序写会(存储设备)

相关参数:

查询InnoDB缓冲池的大小,单位是字节

show variables like ‘innodb_buffer_pool_size’;

innodb_max_dirty_pages_pct变量影响脏页的数量,

查看innodb_max_dirty_pages_pct的设置

show variables like ‘innodb_max_dirty_pages_pct’

当脏页超过innodb_max_dirty_pages_pct指定的百分比之后,后台线程启动(快速刷写模式)将脏页刷写入磁盘

MySQL内存不足时,有一个类似于sqlserver的lazywrite的后台线程定时将脏页刷新入磁盘,

并且清理脏页占用的内存空间,给其他数据(需要载入内存的数据)使用。

当事务日志没有空间的时候,InnoDB将进入激烈刷写模式,大日志可以提升性能的原因(?)

预热缓冲区:

可以理解成数据库启动的时候将数据从磁盘加载到缓存区中,以提升数据的访问性能

两种预热缓冲区的方法

1.Percina Server

2.Init_file设置,也即启动后指定Init_file里面的sql,将sql语句中指定的数据写入缓冲区

MyisAM键缓存(key caches)

作用:

MyisAM键缓存又称键缓冲,MyisAM表只缓存索引不缓存数据,MyisAM键缓存就是缓存的索引

相关参数:

默认只有一个MyisAM键缓存(池)

配置选项key_buffer_size

设置key_buffer_size时参考索引的大小,key_buffer_size的值没必要设置的比索引更大

或者不超过操作系统缓存保留总内存的25%-50%

设置时参考索引字段的大小:select sum(index_length) from information_schema.`TABLES`

mysql默认回将所有索引都换粗在默认键缓存中,

每个MyisAM键缓存(池)有指定的大小,可以建多个key_buffer_size来缓存索引

配置方法,在配置文件中加入

key_buffer_1.key_buffer_size = 1G

key_buffer_2.key_buffer_size = 1G

加上默认的一个,一共有三个key_buffer_size

指定索引到键缓存:

缓存表的索引到指定缓冲区:cache index t1,t2 in key_buffer_1

或者在init_file中配置

LODA INDEX INTO CACHE t1,t2(被分配在默认缓冲区)

键缓存使用率计算:

100-((key_buffer_unused*key_cache_block_size)*100/key_buffer_size)

其它:

1.MyisAM使用操作系统内存来缓存数据,数据往往比索引要大,因此要预留更多的内存给操作系统缓存,而不是键缓存

2.即使没有使用MyisAM表,依旧要设置key_buffer_size为一个较小的值(比如32M),mysql服务器可能在内部使用MyisAM表

线程缓存

作用:

当连接关闭后,释放的线程被缓存起来,处于备用状态,

当有新的连接创建时,可以直接使用缓存中缓存的线程,以提高连接请求的效率

不用为每个连接创建新的线程

消费方式:

新进来的连接从缓存中占用一个处于缓存状态的线程(被占用后从缓存中删除),

当连接关闭后,如果线程缓存还有空间的话,将当前线程归还到缓存线程中,如果缓存线程没有空间,则销毁这个线程

相关参数:

thread_cache_size指定了缓存中可保存的线程的个数

每个线程占用的内存空间为256kb左右,

除非有非常高的并发访问,否则不应该,一般不需要配置这个值

单位是缓存的线程的个数

show variables like ‘thread_cache_size’

每个线程占用的内存空间为256kb左右,

表缓存

作用:

主要是跟MyisAM表有关,缓存的是表的.frm解析结果和一些其他数据,

缓存之后就提高访问表的效率。对于MyIsAM表,表缓存之后可以避免修改MyisAM头文件来标记表正在被使用

show variables like ‘%table_open_cache%’;

InnoDB 数据字典表

作用:

缓存InnoDB的表定义信息,

每当打开一张InnoDB表的时候,就会缓存这个表的定义到数据字典,但是表关闭后并不会从缓存中移除

作者:MSSQL123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值