MySQL启动参数(二) —— key_buffer_size

为了最小化磁盘的IO,MyISAM存储引擎的表使用key cache来缓存索引块,索引块的缓存大小由key_buffer_size参数来设置,如果数据库中使的表以MyISAM存储引擎为主,则应该适当增加该参

数的值,以便尽可能的缓存索引块,提高访问的速度。

默认情况下,所有的索引都使用相同的key cache,当访问的索引不在缓存中时,使用LRU(Least Recently Used最近最少使用)算法来替换缓存中最近最少使用的索引块,为了进一步避免对key cache的争用,从MSQL5.1开始,可以设置多个key cache,并为不同的索引键指定使用的key cache。

记住:key_buffer_size只能在MyISAM存储引擎使用。



show variables like ‘key_buffer_size‘ —— 显示默认key cache的大小

set global key_buffer_size=102400 —— 设置默认key cache的大小

set global my_cache1.key_buffer_size = 204800 —— 设置自定义key cache的大小,my_cache1可以修改为其他名称,该名称就是这个key cache的名称

select @@global.my_cache1.key_buffer_size —— 显示自定义key cache的大小,如果要删除这个缓存,只需把大小设置成0就可以了

上面我们创建了两个自定义的缓存:my_cache1和my_cache2。下面我们在创建两张表来演示如何将索引加入缓存。

table1:

table2:

cache index table1, table2 in my_cache1 —— 把table1和table2中所有的索引放入my_cache1缓存。其实这里并不是马上就把索引放到缓存,而只是告诉数据库table1和table2的索引要放入名为my_cache1缓存,等使用该索引查询时才放入,或者用LOAD INDEX INTO CACHE命令预先载入。

cache index table1 index (table1_index_id) in my_cache1 —— 把table1中名为table1_index_id的索引放入my_cache1缓存,这样可以把表的不同索引放入不同缓存。跟上面一样并不是马上就把索引放到缓存,只是建立一个索引和缓存之间的关联。

通常在数据库刚刚启动的时候,需要等待索引被缓存到缓存区中,这段时间据库会因为缓存命中率低而导致访问效率不高。这个时候我们就可以通过LOAD INDEX INTO CACHE命令将索引预加载至缓存区中。具体的操作方式是:

load index into cache table1 —— 把table1中所有的索引加载进缓存,如果索引已经关联了一个缓存则放入该缓存;如果没有,则放入系统默认缓存。

load index into cache table1 index (table1_index_id) —— 把table1中名为table1_index_id的索引加载进缓存



注意:默认的缓存key_buffer_size是无法删除的。如果你自定义的缓存被删除,那加载到该缓存的索引会被重新加载到默认缓存。

时间: 2024-10-13 18:12:48

MySQL启动参数(二) —— key_buffer_size的相关文章

mysql启动参数 skip-grant-tables

非常有用的mysql启动参数—— --skip-grant-tables. 顾名思义,就是在启动mysql时不启动grant-tables,授权表.有什么用呢?当然是忘记管理员密码后有用. 在mysql.cnf 配置文件中加上skip-grant-tables,然后重启mysql服务 操作方法:    1.mysql.cnf 配置文件中加上skip-grant-tables 2.  重启mysql服务 , sudo service mysql restart 3. mysql 直接连接进入客户端

skip-grant-tables:非常有用的mysql启动参数

介绍一个非常有用的mysql启动参数—— --skip-grant-tables. 顾名思义,就是在启动mysql时不启动grant-tables,授权表.有什么用呢?当然是忘记管理员密码后有用. 操作方法:     1.杀掉原来进行着的mysql:        rcmysqld stop        或者:        service mysqld stop        或者:        kill -TERM mysqld     2.以命令行参数启动mysql:        /

mysql启动参数 skip-grant-tables

skip-grant-tables:非常有用的mysql启动参数 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost'(using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost'(using password: YES) 地址:https://blog.csdn.net/m_wise/article/details/7019

mysql启动参数(/etc/my.cnf)详解汇总

在linux下面的/etc/my.cnf的参数详解汇总 MYSQL–my.cnf配置中文详解 basedir = path   使用给定目录作为根目录(安装目录). character-sets-dir = path   给出存放着字符集的目录. datadir = path   从给定目录读取数据库文件. pid-file = filename   为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进

MySQL启动参数(一) —— init_file

有时候我们希望MySQL能够在启动时做一些数据库的操作,比如把索引加入cache等等.因为有些配置会在MySQL重启后失效,重启后我们就可以通过init_file这个参数让MySQL重新执行一些SQL语句. 首先我们需要在my.ini文件里指定要执行的.sql文件的地址: init_file="D:\mysql-5.7.11\init.sql" 然后在init.sql文件中写上启动时要执行的SQL语句: use java_web_core; create table init_tabl

MySQL启动参数(四) —— innodb_buffer_pool_size

MyISAM引擎可以使用key_buffer_size来缓存索引,而innoDB则可以使用innodb_buffer_pool_size来实现该功能.但innodb_buffer_pool_size跟key_buffer_size不同的地方在于,innodb_buffer_pool_size同时缓存数据块和索引. innodb_buffer_pool_size单位为字节,所以下面设置的大小为83M.从理论上说该值是越大越好,但设置得越大对物理内存占用越高,所以应该根据系统实际的吞吐量进行设置.

java启动参数二

非标准参数又称为扩展参数,其列表如下: -Xint 设置jvm以解释模式运行,所有的字节码将被直接执行,而不会编译成本地码. -Xbatch 关闭后台代码编译,强制在前台编译,编译完成之后才能进行代码执行: 默认情况下,jvm在后台进行编译,若没有编译完成,则前台运行代码时以解释模式运行. -Xbootclasspath:bootclasspath 让jvm从指定路径(可以是分号分隔的目录.jar.或者zip)中加载bootclass,用来替换jdk的rt.jar:若非必要,一般不会用到: -X

Tokyo Tyrant(TTServer)系列(二)-启动参数和配置

启动参数介绍 ttserver命令可以启动一个数据库实例.因为数据库已经实现了Tokyo Cabinet的抽象API,所以可以在启动的时候指定数据库的配置类型. 支持的数据库类型有: 内存hash数据库 内存tree数据库 hash数据库 B+ tree数据库, 命令通过下面的格式来使用,'dbname'制定数据库名,如果省略,则被视作内存hash数据库. ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pi

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like