读书笔记,待补充完善

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表的时候,就会缓存这个表的定义到数据字典,但是表关闭后并不会从缓存中移除

MySQL缓存分类和配置的更多相关文章

  1. (3.11)mysql基础深入——mysql文件分类与配置文件管理

    (3.11)mysql基础深入——mysql文件分类与管理 关键词:mysql配置文件,mysql参数文件,mysql中的my.cnf 目录:mysql数据库文件分类: [1]参数文件:my.cnf ...

  2. Mysql缓存的配置和使用

    在mysql服务器高负载的情况下,必须采取一种措施给服务器减轻压力,减少服务器的I/O操作.一般采用的方法是优化sql操作语句,优化服务器的配置参数,从而提高服务器的性能.Mysql使用了几种内存缓存 ...

  3. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  4. MySQL数据库安装,配置My.ini文件

    最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇 ...

  5. MYSQL内存--------启动mysql缓存机制,实现命中率100% 转

    虽然这个标题夸张得过了头,但此文很完整,值得学习.转自 http://www.yy520.net/read.php?278 myql优化,启动MySQL缓存机制,实现命中率100% 配置你的mysql ...

  6. MySQL 主主同步配置和主从配置步骤

    ★预备知识 : 1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服 ...

  7. Mysql主从复制原理及配置

    Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...

  8. 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置

    说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...

  9. MySQL缓存参数优化(转)

    MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在 ...

随机推荐

  1. Kaptcha

    Kaptcha:google自动生成验证码组件 kaptcha的使用比较方便,只需添加jar包依赖之后简单地配置就可以使用了 kaptcha所有配置都可以通过web.xml来完成,如果你的项目中使用了 ...

  2. 生成excel的时候要用双引号。。。。。

    <?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition ...

  3. pycharm中导入requests,xmlx等模块的方法。

    现在pycharm的功能越来越强大,我们需要什么直接就可以导入: 下面正式开始介绍: 第一步: 先选择左边的:project interpreter   ----->再点击后面的绿色的加号. 那 ...

  4. HTTP中Get、Post、Put与Delete。了解一下!

    1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数据,不会影响资源的内容,即该请求不会产生副作用.无论进行多少次操 ...

  5. (转)CSS3:nth-child()伪类选择器,奇偶数行自定义样式first-child

    原文地址 Table表格奇偶数行定义样式: CSS3的强大,让人惊叹,人们在惊喜之余,又不得不为其艰难的道路感到可惜:好的标准只有得到行业浏览器的良好支持才算得上“标准”.CSS3标 准已提出数年,但 ...

  6. hadoop2.4的伪集群的搭建

    1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...

  7. day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数

    本文档主要内容: 一 装饰器函数的信息打印 二 迭代器 三 生成器 四 生成器表达式和列表推导式 五 内置函数 一 装饰器函数的信息打印 一个函数一旦被装饰器给装饰后,这个函数的信息使用原来的命令打印 ...

  8. <项目管理的决策力>总结梳理

    最近去总部参加了两天培训,关于<项目管理的决策力>,有时间会整理一下思路. ---todo 总结 6个阶段30个决策点如下:

  9. docekr-image的区别和container;docker run和start,create

    copy by: https://www.simapple.com/326.html 容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那 ...

  10. oracle 表或视图不存在

    导入导出时,会自动表名自动加上了““双引号需要将表名改一下就可以了 alter table "oldtablename" rename to newtableName;