mysql的缓存-mysql总结缓存(2-16-73)

更新时间:2024-07-16 分类:MySQL 浏览量:2

MySQL本文目录一览:

  • 1、MySQL数据库线程缓冲池详解
  • 2、MySQL的缓存对象有什么?
  • 3、MySQL缓存

MySQL数据库线程缓冲池详解

1、innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的锁保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。

2、可以类比为 java中的 ThreadLocal 线程本地变量 就是为每个线程维护一个buffer pool实例,这样就不用去争用同一个实例了。相当于减少高并发下mysql对INNODB_BUFFER缓冲池的争用。

3、应在MySQL配置文件中修改innodb_buffer_pool_size参数,增加InnoDB数据表缓冲池的大小,从而减少使用的负荷。此外,应适当调整max_connections参数,减少MySQL数据库实例的最大连接数,避免InnoDB缓冲池空间不足导致的性能问题。

MySQL的缓存对象有什么?

1、redis是一种内存性的数据存储服务,所以它的速度要比mysql快。2,redis只支持String,hashmap,set,sortedset等基本数据类型,但是不支持联合查询,所以它适合做缓存。

2、MySQL 一直以来都有 TEXT、BLOB 等类型用来存储图片、视频等大对象信息。比如一张图片,随便一张都 5M 以上。视频也是,随便一部视频就是 2G 以上。

3、mysql缓存数据,一般都是放在内存的,因为速度快管理方便。硬盘在高速的请求下,IO会成为瓶颈。但如果涉及大操作复杂操作,要查询+排序+索引的话,会先生成一个临时文件在硬盘,完成后自动删除。

4、脚本同步:自己写脚本将数据库数据写入到redis/memcached。这就涉及到实时数据变更的问题(mysql row binlog的实时分析),binlog增量订阅Alibaba 的canal ,以及缓存层数据 丢失/失效 后的数据同步恢复问题。

5、LRU机制在实际运行过程中,是会存在巨大的隐患的:MySQL的预读机制带来的隐患:所谓的预读机制,就是当你从磁盘加载一个数据页的时候,可能会连带着把这个数据页相邻的其它数据页也加载到缓存里去。

MySQL缓存

1、MySQL0取消了查询缓存,这是因为查询缓存具有严重的可伸缩性问题,并且很容易成为严重的瓶颈。

2、先删除缓存,再更新数据库。这个逻辑是错误的,因为两个并发的读和写操作导致脏数据。(以Redis和Mysql为例)。

3、pool_instances 可以设置为cpu核心数,它的作用是:1)对于缓冲池在数千兆字节范围内的系统,通过减少争用不同线程对缓存页面进行读写的争用,将缓冲池划分为多个单独的实例可以提高并发性。

4、还应该监视缓存中的线程数(Threads_cached)以及创建了多少个线程,因为无法从缓存中获取线程(Threads_created)。关于后者,如果Threads_created继续以每分钟多于几个线程的增加,请考虑增加thread_cache_size的值。

5、LRU机制在实际运行过程中,是会存在巨大的隐患的:MySQL的预读机制带来的隐患:所谓的预读机制,就是当你从磁盘加载一个数据页的时候,可能会连带着把这个数据页相邻的其它数据页也加载到缓存里去。

6、使用redis做缓存必须解决两个问题,首先就是确定用何种数据结构存储来自mysql的数据;确定数据结构之后就是需要确定用什么标识来作为数据的key。 mysql是按照表存储数据的,这些表是由若干行组成。