mysql key buffer_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服務
再次查詢如下
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#语言程序设计上机实验,C#语言程序设
- 下一篇: linux cmake编译源码,linu