mysql效能測試調優
作業系統
基本操作
檢視磁碟分割槽mount選項
$ mount
永久修改分割槽mount選項(系統重啟後生效)
修改檔案 /etc/fstab 中對應分割槽的mount options列的值
$sudo -t ext4 -o remount,noatime,errors=remount-or /
檔案系統優化
ext4檔案系統優化
分割槽mount選項加noatime $sudo -t ext4 -o remount,noatime,errors=remo
注意:剛開始加了 nodelalloc 發現mysql寫入不如去掉此引數(原因需分析)[參考:
mysql
基本操作
顯示innodb引擎狀態
mysql> show engine innodb status;
檢視配置引數
mysql> show variables [like ''];
檢視執行狀態值
mysql> show global status [like ''];
修改配置引數方法
4.1. 修改配置檔案(重啟服務生效,適用於所有引數)
檔案位置: /etc/my.cnf
4.2. 命令動態修改(重啟服務失效,適用於動態引數)
°mysql> set global [引數]=[值]
重啟mysql服務
$ sudo service [mysql.server] restart
賦權同時新增使用者,重新整理許可權
語法:mysql> grant [許可權] privileges on [資料庫].[物件] to [使用者名稱]%'[機器名]' identified by '[密碼]';
示例:mysql> grant all privileges on *.* to user1@'%' identified by 'pass1';
mysql> grant all privileges on *.* to user1@'localhost' identified by 'pass1';
mysql> flush privileges;
引數調整
innodb_buffer_pool_size 參考
作用:innodb用於快取表及索引資料的記憶體緩衝區,innodb加速優化首要引數
說明:innodb用於快取表及索引資料的記憶體緩衝區容量的位元組數。預設是128m。最大值受限於cpu架構;32位系統最大4294967295 (2的32次方減1),64位系統最大18446744073709551615 (2的64次方減1)。在32位系統中,cpu架構和作業系統可以使用的實際最大值可能小於理論上的最大值。當緩衝區大小超過1gb時,設定innodb_buffer_pool_instances為大於1的值,能夠改進乙個負荷較大的伺服器的可擴充套件性。
如果你將這個值設的較大,當多次訪問資料表中相同的資料時可以減少磁碟io.專用的資料庫伺服器上,你可以將此值設定為機器物理記憶體的80%。如果出現以下問題,請縮小該引數的值。
1.物理記憶體爭用,導致作業系統進行頁排程
2.innodb用額外的記憶體進行緩衝和控制結構,所以總共分配的記憶體將比指定的約大10%
3.位址空間必須是連續的,這在windows系統中某些dll需要載入指定位址時可能是乙個問題
4.初始化緩衝池的時間與它的大小成正比,如果緩衝池太大,初始化時間可能比較長。例如,在乙個現代的linux x86_64伺服器,初始化10gb的緩衝池大約需要6秒。
修改方法:
靜態引數,必須通過配置檔案修改: innodb_buffer_pool_size=8g
日誌相關引數
2.1. innodb_log_file_size 參考
作用:日誌組中每個日誌檔案大小
說明:日誌組中每個日誌檔案的大小. 所有日誌檔案大小總和(innodb_log_file_size * innodb_log_files_in_group)不能超過乙個最大值(略小於512gb)。例如,兩個255g的日誌檔案剛好接近但未超過最大值。預設值是48m。合理的取值範圍是1mb到緩衝池大小的1/n,n是日誌組中日誌檔案個數。這個值越大,緩衝池就需要更少的重新整理檢查,減少磁碟io。但是值過大會加大宕機恢復時間,雖然自mysql5.5改進了恢復效能,但是還是要考慮下這個值的合理性。
修改方法:
靜態引數,必須通過配置檔案修改: innodb_log_file_size=256m
2.2. innodb_log_files_in_group 參考
作用:日誌組中日誌檔案個數。
說明:日誌組中日誌檔案個數。innodb迴圈方式寫日誌檔案。預設值(也是建議值)是2。日誌檔案的位置通過innodb_log_group_home_dir指定。所有日誌檔案大小總和(innodb_log_file_size * innodb_log_files_in_group)不能超過乙個最大值(略小於512gb)。
修改方法:
靜態引數,必須通過配置檔案修改: innodb_log_files_in_group=3
2.3. innodb_log_buffer_size 參考
作用:innodb寫日誌檔案到磁碟的緩衝區大小
說明:修改方法:
靜態引數,必須通過配置檔案修改: innodb_log_buffer_size=16m
innodb_flush_method 參考
作用:控制innodb flush資料和日誌檔案採用的系統呼叫
說明:windows不用設定
linux可選擇:fdatasync(預設),o_dsync,o_direct(直接寫入磁碟,禁止系統cache),o_direct_no_fsync(>=5.6.7版本支援)
修改方法:
靜態引數,必須通過配置檔案修改: innodb_flush_method=o_direct
innodb_flush_log_at_trx_commit(未修改) 參考
作用:控制事務符合acid和提高系統效能之間的權衡
說明:這個引數在事務符合acid和高效能之間進行平衡,你可以通過調整這個引數達到高效能,但是宕機時可能丟失1秒的事務。
這個引數有3個值選項0,1,2:
1(預設值):嚴格遵從acid,事務提交時log buffer被寫到日誌檔案中,並將日誌檔案內容flush到磁碟。
0:任何mysqld程序崩潰丟失1秒鐘的事務。log buffer每隔1秒被寫入日誌檔案並將日誌檔案重新整理到磁碟,事務提交時不執行log buffer寫入日誌檔案的操作。因為系統排程問題,不能保證每秒日誌檔案都重新整理到磁碟百分之百執行。
2:任何mysqld程序崩潰丟失1秒鐘的事務。事務提交時log buffer被寫入日誌檔案,每隔1秒將日誌檔案重新整理到磁碟。因為系統排程問題,不能保證每秒日誌檔案都重新整理到磁碟百分之百執行。
修改方法:
動態引數,可以通過配置檔案和命令修改:innodb_flush_log_at_trx_commit=2
Linux下效能壓測之系統引數調優
在做服務端壓測的時候,經常會遇到一些由於linux系統限制導致壓力上不去的情況,這裡從linux系統引數上做一些調優,減少此類因素的干擾。執行 sudo vi etc sysctl.conf,新增以下內容 tcp connection recovery net.ipv4.tcp max tw buc...
mysql效能調優
1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在where子句中對字段進行null判斷,否則會導致引擎放棄使用索引而進行全表掃瞄。3.應盡量避免在where子句中使用 或 操作符,否則會導致引擎放棄使用索引而進行全表掃瞄。4...
Mysql效能調優
mysql 效能調優有很多方面,主要是這幾個方面 1 正規化 是指表的列具有原子性,不可再拆分,只要資料庫是線性的,都自動滿足1nf。2 正規化 表中的紀錄是唯一的。3 正規化 表中資料不應該有冗餘,如果通過某個欄位就能得到跟該字段相關的資訊,就沒必要將這些資訊,再存放到該表中。在3nf中,可能會對...