zoukankan      html  css  js  c++  java
  • mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)

    一.概述

             mysql 提供了很多参数来进行服务器的设置,当服务第一次启动的时候,所有启动参数值都是系统默认的。这些参数在很多生产环境下并不能满足实际的应用需求。在这个系列中涉及到了linux 服务器,我这里是centos7.4, mysql 5.7,Xshell6。

      1. 查看mysql server参数

             通过show variables和show status命令查看mysql的服务器静态参数值和动态运行状态信息。前者是在数据库启动后不会动态更改的值。比如缓冲区大小,字符集,数据文件名称等; 后者是数据库运行期间的动态变化的信息,比如锁等待,当前连接数等。下面来简单查看下两个命令

    --  mysql服务静态参数值
    SHOW VARIABLES;

    --  mysql服务运行状态值
    SHOW STATUS;

    二.  影响mysql性能的重要参数

      在上面介绍了mysql server 端的参数查看方法 ,对于这么多参数, 实际大多数参数是不需要用户调整的,下面介绍一些重要参数。先介绍下MyISAM存储引擎的key_buffer_size和table_cache。

      1. key_buffer_size设置

                       key_buffer_size是用来设置索引块(index Blocks)缓存的大小,它被所有线程共享,此参数只应于MYISAM存储引擎。在mysql 5.1后,系统除了默认的索引块缓存,还可以配置多个key_buffer,可以将指定的表索引,缓存入指定的key_buffer,这样可以更小地降低线程之间的竞争。

    -- 查看默认设置
     SHOW VARIABLES LIKE 'key_buffer_size';  

        8388608/1024.0/1024.0=M  默认8M 如下图所示:

         

    -- 建立一个新的索引块缓存
    SET  GLOBAL hot_cache2.key_buffer_size=128*1024

      对于GLOBAL 表示对每一个新的连接,此参数都将生效,hot_cache2是新的key_buffer名称,可以随时进行重建,例如:

    SET  GLOBAL hot_cache2.key_buffer_size=200*1024

      把相关表的索引,放到指定的索引块缓存中如下:

    -- 将表(userbymyisam )索引放入指定的索引块中 
    CACHE INDEX userbymyisam IN hot_cache2

      想将索引预装到默认的key_buffer中,可以使用load index into cache语句,例如预装表userbymyisam的所有索引 预装到默认的key_buffer。

    LOAD INDEX INTO CACHE userbymyisam

    -- 删除索引缓存,如下命令
    SET  GLOBAL hot_cache2.key_buffer_size=0

      注意:默认的key_buffer是不能删除的如:  SET  GLOBAL key_buffer_size=0 下次重启时还会有。

     总结: cache index命令在一个表和key_buffer之间建立一种联系,但每次服务器重启时key_buffer中的数据将清空,如果想每次服务器重启时相应表的索引能自动放到key_buffer中,可以在配置文件中设置init-file选项来指定包含cache index语句文件路径,然后在对应的文件中写入cache index语句。

       下面创建二个缓存索引块:

      每次服务器启动时,执行mysqld_init.sql中的语句, 文件中几个表,分别对应hot_cache和cold_cache:

      2. 通过操作系统来设置key_buffer

        如果要设置mysql服务系统参数可以在linux里设置,先要找到my.cnf 文件位置,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。
        如下图所示,尝试修改默认key_buffer_size改为12M:
        
        
        停止服务再重启sql服务
        
        
        再次查询如下

        

  • 相关阅读:
    IOS系统input输入框为readonly时, 隐藏键盘上的上下箭头
    vue2.0做移动端开发用到的相关插件和经验总结
    安卓手机输入法挡住输入框的问题
    .NET返回上一页
    多线程编程
    多线程采集
    Delphi Base64编码_解码及ZLib压缩_解压(转)
    MySQL教程97-MySQL创建索引
    MySQL教程96-MySQL索引类型
    MySQL教程95-MySQL索引 INDEX
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9437034.html
Copyright © 2011-2022 走看看