MySQL 8 0 首個自適應引數橫空出世

2021-09-20 00:07:37 字數 1801 閱讀 5998

|什麼是自適應引數

|自適應引數是如何設定和適應變化的

可以設定引數 innodb_dedicated_server=on來讓mysql自動探測伺服器的記憶體資源,確定innodb_buffer_pool_size, innodb_log_file_size 和 innodb_flush_method 三個引數的取值。具體取值策略如下。

innodb_buffer_pool_size:

innodb_log_file_size:

如果系統允許設定為o_direct_no_fsync。如果系統不允許,則設定為innodb預設的flush method。

上述這些引數在mysql每次啟動時自動探測伺服器(包括虛擬機器和容器的記憶體)配置並自動生效。

|自適應引數使用注意

'variable name' 指的就是 innodb_buffer_pool_size/innodb_log_file_size/inndob_flush_method引數。

注意:你不管是在配置檔案、命令列、還是mysql新引入的固化配置中設定上述三個引數都被認為是顯式指定了引數值,都會優先生效。

"[error] innodb: error number 28 means 'no space left on device'

[error] innodb: cannot set log file to size mb"

* mysqld服務拒絕啟動。

在5.7上,innodb_buffer_pool_size預設為134217728即128mb,如果採用預設設定,mysql 5.7大致只能消耗系統的512m記憶體。

而innodb_log_file_size=50331648 即48m,對於大併發下的請求並不適用。

mysql 8.0提供了innodb_dedicated_server=on這個引數可以很大程度解決這方面的問題。

這個引數在innodb上對效能的影響相對較大,並且也是最急迫需要自適應調整的幾個引數。(個人覺得innodb_buffer_pool_instances也應該在自適應調整的範圍內)

目前它也只是探測了系統記憶體,實現起來比較簡單,並且對效能改進非常有效,基本能解決絕大部分入門dba安裝的效能問題。就像乙個在班級成績排名倒數的同學,先幫他解決了60分及格的問題再考慮提高到班級前10名。

要解決其他問題,例如sort_buffer_size,read_rnd_buffer_size等連線記憶體自適應調整,需要對記憶體的精細控制,並且各種應用訪問方式並不一樣,並不是那麼容易自適應;而innodb_read_io_threads,innodb_write_io_threads等需要根據cpu核數調整,也跟應用訪問模式有一定關係;對於innodb_io_capacity而言,要探測底層儲存裝置具體的io能力,並相應設定,也不是乙個簡單的工作。

到底其他影響效能的自適應引數什麼時候調,只能敬請期待了。

各位雲廠商的同志們有福了,利用這個引數就可以保證伺服器(虛擬機器或者容器)擴充套件以後,mysql能「自適應」以盡量消耗更多的伺服器資源,而不用自己設計乙個自動擴充套件mysql伺服器資源配置的指令碼。既避免了伺服器擴充套件以後mysqlbuffer pool不變等,使用不了那麼多資源;也避免了伺服器縮減了以後mysqlbuffer pool過大等,導致mysql服務程序啟動不起來。

這個引數的改變,也意味著:

原文發布時間為:2018-10-10

mysql8 0提示命令 MySQL8 0操作命令

mysql8.0版本和mysql5.0的加密規則不一樣,而現在的很多任務具等都是不支援的,我們這裡使用的是將mysql使用者登入的加密規則修改為mysql native password的方法來進行解決的。修改加密規則alter user root localhost identified by p...

mysql8 0修改登入

在mysql8.0當中的密碼認證外掛程式以經由mysql native password改為caching sha2 password 修改密碼的方式也發生了改變,控制台修改密碼方法如下 use mysql alter user root localhost identified by 新密碼 修改...

mysql8 0使用者操作

命令 create user username host identified by password 說明 username 你將建立的使用者名稱 host 指定該使用者在哪個主機上可以登陸,如果是本地使用者可用localhost,如果想讓該使用者可以從任意遠端主機登陸,可以使用萬用字元 pass...