mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)
一.概述
mysql 提供了很多參數(shù)來進行服務器的設(shè)置,當服務第一次啟動的時候,所有啟動參數(shù)值都是系統(tǒng)默認的。這些參數(shù)在很多生產(chǎn)環(huán)境下并不能滿足實際的應用需求。在這個系列中涉及到了linux 服務器,我這里是centos7.4, mysql 5.7,Xshell6。
1. 查看mysql server參數(shù)
通過show variables和show status命令查看mysql的服務器靜態(tài)參數(shù)值和動態(tài)運行狀態(tài)信息。前者是在數(shù)據(jù)庫啟動后不會動態(tài)更改的值。比如緩沖區(qū)大小,字符集,數(shù)據(jù)文件名稱等; 后者是數(shù)據(jù)庫運行期間的動態(tài)變化的信息,比如鎖等待,當前連接數(shù)等。下面來簡單查看下兩個命令
--mysql服務靜態(tài)參數(shù)值
SHOW VARIABLES;
--mysql服務運行狀態(tài)值
SHOW STATUS;
二.?影響mysql性能的重要參數(shù)
在上面介紹了mysql server 端的參數(shù)查看方法 ,對于這么多參數(shù), 實際大多數(shù)參數(shù)是不需要用戶調(diào)整的,下面介紹一些重要參數(shù)。先介紹下MyISAM存儲引擎的key_buffer_size和table_cache。
1. key_buffer_size設(shè)置
key_buffer_size是用來設(shè)置索引塊(index Blocks)緩存的大小,它被所有線程共享,此參數(shù)只應于MYISAM存儲引擎。在mysql 5.1后,系統(tǒng)除了默認的索引塊緩存,還可以配置多個key_buffer,可以將指定的表索引,緩存入指定的key_buffer,這樣可以更小地降低線程之間的競爭。
--查看默認設(shè)置
SHOW VARIABLES LIKE 'key_buffer_size';
8388608/1024.0/1024.0=M? 默認8M 如下圖所示:
--建立一個新的索引塊緩存
SET GLOBAL hot_cache2.key_buffer_size=128*1024
對于GLOBAL 表示對每一個新的連接,此參數(shù)都將生效,hot_cache2是新的key_buffer名稱,可以隨時進行重建,例如:
SET GLOBAL hot_cache2.key_buffer_size=200*1024
把相關(guān)表的索引,放到指定的索引塊緩存中如下:
--將表(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 下次重啟時還會有。
總結(jié): cache index命令在一個表和key_buffer之間建立一種聯(lián)系,但每次服務器重啟時key_buffer中的數(shù)據(jù)將清空,如果想每次服務器重啟時相應表的索引能自動放到key_buffer中,可以在配置文件中設(shè)置init-file選項來指定包含cache index語句文件路徑,然后在對應的文件中寫入cache index語句。
下面創(chuàng)建二個緩存索引塊:
每次服務器啟動時,執(zhí)行mysqld_init.sql中的語句, 文件中幾個表,分別對應hot_cache和cold_cache:
2. 通過操作系統(tǒng)來設(shè)置key_buffer
如果要設(shè)置mysql服務系統(tǒng)參數(shù)可以在linux里設(shè)置,先要找到my.cnf 文件位置,一般會放在/etc/my.cnf,/etc/mysql/my.cnf。
如下圖所示,嘗試修改默認key_buffer_size改為12M:
停止服務再重啟sql服務
再次查詢?nèi)缦?/p>
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#语言程序设计上机实验,C#语言程序设
- 下一篇: java 数据库 事务 只读_java