一.概述 mysql 提供了很多參數來進行伺服器的設置,當服務第一次啟動的時候,所有啟動參數值都是系統預設的。這些參數在很多生產環境下並不能滿足實際的應用需求。在這個系列中涉及到了liunx 伺服器,我這裡是centos7.4, mysql 5.7,Xshell6。 1. 查看mysql serve ...
一.概述
mysql 提供了很多參數來進行伺服器的設置,當服務第一次啟動的時候,所有啟動參數值都是系統預設的。這些參數在很多生產環境下並不能滿足實際的應用需求。在這個系列中涉及到了liunx 伺服器,我這裡是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服務系統參數可以在liunx里設置,先要找到my.cnf 文件位置,一般會放在/etc/my.cnf,/etc/mysql/my.cnf。
如下圖所示,嘗試修改預設key_buffer_size改為12M:
停止服務再重啟sql服務
再次查詢如下