zoukankan      html  css  js  c++  java
  • mysql之innodb_buffer_pool

    1>.mysqld重启之后,innodb_buffer_pool几乎是空的,没有任何的缓存数据。随着sql语句的执行,table中的数据以及index 逐渐被填充到buffer pool里面,之后的查询语句只需要在内存中操作(理想状态下),大幅度提升了mysql的性能。 这个逐渐填充的过程可能需要1-2个小时,甚至更久也说不准。在此过程中,mysql性能一般,因为需要大量的硬盘读操作

    2>.innodb在内存中维护一个缓冲池用来缓存数据和索引,缓存池管理一个数据块列表,该列表又分为2个字列,一个子列存放new blocks,另一个子列存放old blocks。old blocks默认占整个列大小的3/8(可通过innodb_old_blocks_pct改变默认值,该值范围在5-95之间,这是一个百分比),其余大小为new blocks占用

    手工导出的话,可以用这个命令:

    mysql> SET innodb_buffer_pool_dump_now=ON;

    然后mysql会在innodb的数据目录中生成一个文件:ib_buffer_pool

    关闭mysql的时候,自动导出:

    mysql> SET innodb_buffer_pool_dump_at_shutdown=ON;

    在my.cnf中加上 innodb_buffer_pool_load_at_startup=ON 就会在mysqld启动之后,重新加载buffer pool。

    3>.innodb_buffer_pool_instances:主要用于将innodb_buffer_pool进行划分,通过划分innodb_buffer_pool为多个实例,可以提高并发能力,并且减少了不同线程读写造成的缓冲页;但是不必设置过大,该值对mysql性能提升不大,有待测试;

    题外话:

      mysql为缓存分配内存:操作系统为myisam的数据提供缓存;myisam键缓存;innodb缓存池;查询缓存

    简单、坚定
  • 相关阅读:
    Matlab之rand(), randn(), randi()函数的使用方法
    matlab给图片插入说明文字
    matlab之find()函数
    excel根据数据源变化的动态图表
    高斯坐标
    (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁
    (转)MySQL 插入数据时,中文乱码问题的解决
    (转)防止人为误操作MySQL数据库技巧一例
    (转)mysql explain详解
    (转)一个MySQL 5.7 分区表性能下降的案例分析
  • 原文地址:https://www.cnblogs.com/zengguowang/p/5341189.html
Copyright © 2011-2022 走看看