mysql> show variables like
"%innodb%";
這個是innodb最重要的引數,主要作用是快取innodb表的索引,資料,插入資料時的緩衝,預設值為128m。
如果是乙個專用db伺服器,那麼它可以佔到記憶體的70%-80%。
並不是設定的越大越好。設定的過大,會導致system的swap空間被占用,導致作業系統變慢,從而減低sql查詢的效率。
如果你的資料比較小,那麼可分配是你的資料大小+10%左右做為這個引數的值。例如:資料大小為50m,那麼給這個值分配innodb_buffer_pool_size=64m就夠了
設定方法:在my.cnf檔案裡:
innodb_buffer_pool_size=4g
這個引數指定在乙個日誌組中,每個log的大小。innodb的logfile就是事務日誌,用來在mysql crash後的恢復.所以設定合理的大小對於mysql的效能非常重要,直接影響資料庫的寫入速度,事務大小,異常重啟後的恢復。在mysql 5.5和5.5以前innodb的logfile最大設定為4gb,在5.6以後的版本中logfile最大的可以設為512gb。一般取256m可以兼顧效能和recovery的速度。
設定方法:在my.cnf檔案裡:
innodb_log_file_size=256m
事務在記憶體中的緩衝,也就是日誌緩衝區的大小, 預設設定即可,具有大量事務的可以考慮設定為16m。
控制事務的提交方式,也就是控制log的重新整理到磁碟的方式。
這個引數只有3個值(0,1,2).預設為1,效能更高的可以設定為0或是2,這樣可以適當的減少磁碟io(但會丟失一秒鐘的事務。),遊戲庫的mysql建議設定為0。主庫請不要更改了。
其中:
0:log buffer中的資料將以每秒一次的頻率寫入到log file中,且同時會進行檔案系統到磁碟的同步操作,但是每個事務的commit並不會觸發任何log buffer 到log file的重新整理或者檔案系統到磁碟的重新整理操作;
1:(預設為1)在每次事務提交的時候將logbuffer 中的資料都會寫入到log file,同時也會觸發檔案系統到磁碟的同步;
2:事務提交會觸發log buffer 到log file的重新整理,但並不會觸發磁碟檔案系統到磁碟的同步。此外,每秒會有一次檔案系統到磁碟同步操作。
說明:
這個引數的設定對innodb的效能有很大的影響,所以在這裡給多說明一下。
當這個值為1時:innodb 的事務log在每次提交後寫入日值檔案,並對日值做重新整理到磁碟。這個可以做到不丟任何乙個事務。
當這個值為2時:在每個提交,日誌緩衝被寫到檔案,但不對日誌檔案做到磁碟操作的重新整理,在對日誌檔案的重新整理在值為2的情況也每秒發生一次。但需要注意的是,由於程序呼叫方面的問題,並不能保證每秒100%的發生。從而在效能上是最快的。但作業系統崩潰或掉電才會刪除最後一秒的事務。
當這個值為0時:日誌緩衝每秒一次地被寫到日誌檔案,並且對日誌檔案做到磁碟操作的重新整理,但是在乙個事務提交不做任何操作。mysqld程序的崩潰會刪除崩潰前最後一秒的事務。
從以上分析,當這個值不為1時,可以取得較好的效能,但遇到異常會有損失,所以需要根據自已的情況去衡量。
這個引數控制著innodb資料檔案及redo log的開啟、刷寫模式。
有三個值:fdatasync(預設),o_dsync,o_direct
預設是fdatasync,呼叫fsync()去刷資料檔案與redo log的buffer
為o_dsync時,innodb會使用o_sync方式開啟和刷寫redo log,使用fsync()刷寫資料檔案
為o_direct時,innodb使用o_direct開啟資料檔案,使用fsync()刷寫資料檔案跟redo log。
在類unix作業系統中,檔案的開啟方式為o_direct會最小化緩衝對io的影響,該檔案的io是直接在使用者空間的buffer上操作的,並且io操作是同步的,因此不管是read()系統呼叫還是write()系統呼叫,資料都保證是從磁碟上讀取的
innodb_flush_method=o_direct
####innodb配置###
######
######
##innodb_buffer_pool_size=8g
innodb_log_file_size=256m
innodb_flush_method=o_direct
MySQL5 7優化InnoDB配置以及調優方案
在進行優化前,我們先確認目前資料庫的配置,命令如下 mysql show variables like innodb 這會把所有innodb相關的引數顯示出來,接下來我們對關鍵引數進行優化。這個是innodb最重要的引數,主要作用是快取innodb表的索引,資料,插入資料時的緩衝,預設值為128m。...
mysql5 7學習 mysql 5 7 學習
mysql uroot proot mysql5.7 mysql.user表沒有password欄位改 authentication string 一.建立使用者 命令 create user username host identified by password 例子 create user d...
mysql5 7如何開啟 mysql57怎麼開啟
開啟mysql57的方法 首先開啟winodws執行視窗 然後在開啟編輯框中輸入cmd命令 最後在終端介面中輸入 mysql hlocalhost uroot p123 即可顯示開啟mysql資料庫。windows下用命令列啟動mysql5.7 win菜單鍵即是在鍵盤左下角 ctrl控制 鍵與 al...