日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

lunix mysql 8小时_MySQL 8.0 首个自适应参数横空出世

發(fā)布時間:2024/2/28 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lunix mysql 8小时_MySQL 8.0 首个自适应参数横空出世 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL 8.0 首個自適應(yīng)參數(shù)橫空出世

MySQL 8.0推出一個號稱可以自適應(yīng)服務(wù)器的參數(shù),保證在各種不同的服務(wù)器、虛擬機(jī)、容器下自動適配服務(wù)器資源。本文將為大家詳細(xì)介紹該參數(shù)。

作者 李春·沃趣科技聯(lián)合創(chuàng)始人&高級MySQL數(shù)據(jù)庫專家

出品 沃趣科技

|什么是自適應(yīng)參數(shù)

MySQL8.0推出一個號稱可以自適應(yīng)服務(wù)器的參數(shù),保證在各種不同的服務(wù)器、虛擬機(jī)、容器下自動適配服務(wù)器資源,讓我們一起來看看到底它能做到什么地步。

|自適應(yīng)參數(shù)是如何設(shè)置和適應(yīng)變化的

可以設(shè)置參數(shù) innodb_dedicated_server=ON來讓MySQL自動探測服務(wù)器的內(nèi)存資源,確定innodb_buffer_pool_size, innodb_log_file_size 和 innodb_flush_method 三個參數(shù)的取值。具體取值策略如下。

innodb_buffer_pool_size:

· <1G: 128M(innodb_dedicated_server=為OFF時的默認(rèn)取值)

· <=4G: 探測到的物理內(nèi)存 * 0.5

· >4G: 探測到的物理內(nèi)存 * 0.75

innodb_log_file_size:

· <1G: 48M(innodb_dedicated_server=為OFF時的默認(rèn)取值)

· <=4G: 128M

· <=8G: 512M

· <=16G: 1024M

· >16G: 2G

innodb_flush_method:

如果系統(tǒng)允許設(shè)置為O_DIRECT_NO_FSYNC。如果系統(tǒng)不允許,則設(shè)置為InnoDB默認(rèn)的Flush method。

上述這些參數(shù)在MySQL每次啟動時自動探測服務(wù)器(包括虛擬機(jī)和容器的內(nèi)存)配置并自動生效。

|自適應(yīng)參數(shù)使用注意

· innodb_dedicated_server默認(rèn)設(shè)置為OFF,不會自適應(yīng)調(diào)整3個參數(shù)值。該參數(shù)也不是動態(tài)參數(shù),無法動態(tài)調(diào)整,也就是說MySQL啟動后無法修改這個參數(shù)

· innodb_dedicated_server=ON 設(shè)置以后它其實只探測了服務(wù)器內(nèi)存,所以目前只能自適應(yīng)調(diào)整內(nèi)存相關(guān)的三個參數(shù)

· innodb_dedicated_server=ON的情況下,如果還顯式設(shè)置了 innodb_buffer_pool_size / innodb_log_file_size / innodb_flush_method 參數(shù),顯示設(shè)置的這些參數(shù)會優(yōu)先生效,并且在MySQL的錯誤日志中會打印如下內(nèi)容:

"[Warning] InnoDB: Option innodb_dedicated_server is ignored for because 'variable name'=? is specified explicitly."

'variable name' 指的就是 innodb_buffer_pool_size/innodb_log_file_size/inndob_flush_method參數(shù)。

注意:你不管是在配置文件、命令行、還是MySQL新引入的固化配置中設(shè)定上述三個參數(shù)都被認(rèn)為是顯式指定了參數(shù)值,都會優(yōu)先生效。

· 顯示指定某一個值,并不會影響其他變量的自適應(yīng)參數(shù)值設(shè)置。例如顯式設(shè)置了innodb_buffer_pool_size,那么buffer pool會按照你顯示設(shè)置的值初始化,而不是 innodb_dedicated_server參數(shù)對應(yīng)的值。但是innodb_log_file_size 和 innodb_flush_method 并不會受影響,它們還是會按照innodb_dedicated_server的自適應(yīng)值按照服務(wù)器的內(nèi)存大小來設(shè)置。

· innodb_dedicated_server=ON的情況下,mysqld服務(wù)進(jìn)程每次重啟后都會自動調(diào)整上述三個參數(shù)值。在任何時候MySQL都不會將自適應(yīng)值保存在持久配置中。

· 如果系統(tǒng)不支持O_DIRECT_NO_FSYNC,MySQL會沿用之前的默認(rèn)值。MySQL仍然必須保證在所有平臺上能正常啟動,不需要任何其他更改。

· 如果自適應(yīng)導(dǎo)致innodb_log_file_size對應(yīng)的redo log file超過了磁盤空間限制(這個空間得有多小!),將會采取以下措施:

·· 新生成的日志文件redo log將被刪除

·· 錯誤日志顯示如下

"[ERROR] InnoDB: Error number 28 means 'No space left on device'

[ERROR] InnoDB: Cannot set log file to size MB"

sql

mysqld服務(wù)拒絕啟動。

· innodb_dedicated_server=ON并不見得是最優(yōu)的配置。例如,你用了MyISAM,MyRocks等其他存儲引擎時,建議手工調(diào)整,而不是設(shè)置innodb_dedicated_server=ON

· XFS系統(tǒng)請手工設(shè)置inndob_flush_method=O_DIRECT。在inndob_flush_method=O_DIRECT_NO_FSYNC下,InnoDB使用O_DIRECT來刷新IO,但是跳過fsync()步驟。對某些文件系統(tǒng)有效,但是對XFS文件系統(tǒng)并不適用。為了保證文件的metadata刷新到磁盤中,XFS必須使用O_DIRECT。

|自適應(yīng)之前是怎么樣的

在5.7上,innodb_buffer_pool_size默認(rèn)為134217728即128MB,如果采用默認(rèn)設(shè)置,MySQL 5.7大致只能消耗系統(tǒng)的512M內(nèi)存。

而innodb_log_file_size=50331648 即48M,對于大并發(fā)下的請求并不適用。

這也導(dǎo)致大量文章建議采用相應(yīng)的方法優(yōu)化設(shè)置這些參數(shù),例如:

Is 80% of RAM how you should tune your innodb_buffer_pool_size?

How to calculate a good InnoDB log file size

How to Choose the MySQL innodb_log_file_size

MySQL 8.0提供了innodb_dedicated_server=ON這個參數(shù)可以很大程度解決這方面的問題。

|為什么調(diào)整這幾個參數(shù)而不是其他參數(shù)

這個參數(shù)在InnoDB上對性能的影響相對較大,并且也是最急迫需要自適應(yīng)調(diào)整的幾個參數(shù)。(個人覺得innodb_buffer_pool_instances也應(yīng)該在自適應(yīng)調(diào)整的范圍內(nèi))

目前它也只是探測了系統(tǒng)內(nèi)存,實現(xiàn)起來比較簡單,并且對性能改進(jìn)非常有效,基本能解決絕大部分入門DBA安裝的性能問題。就像一個在班級成績排名倒數(shù)的同學(xué),先幫他解決了60分及格的問題再考慮提高到班級前10名。

要解決其他問題,例如sort_buffer_size,read_rnd_buffer_size等連接內(nèi)存自適應(yīng)調(diào)整,需要對內(nèi)存的精細(xì)控制,并且各種應(yīng)用訪問方式并不一樣,并不是那么容易自適應(yīng);而innodb_read_io_threads,innodb_write_io_threads等需要根據(jù)CPU核數(shù)調(diào)整,也跟應(yīng)用訪問模式有一定關(guān)系;對于innodb_io_capacity而言,要探測底層存儲設(shè)備具體的IO能力,并相應(yīng)設(shè)置,也不是一個簡單的工作。

到底其他影響性能的自適應(yīng)參數(shù)什么時候調(diào),只能敬請期待了。

|適應(yīng)場景

運行MySQL的服務(wù)器上是專門給MySQL提供服務(wù)的。innodb_dedicated_server的默認(rèn)設(shè)置都是假設(shè)這個服務(wù)器的資源,MySQL都能用起來。

|不適應(yīng)場景

· 單機(jī)多實例情況下不適應(yīng)。

· 其他有特殊場景要求的不適用。比如:不是主要以InnoDB為存儲引擎的;服務(wù)器上還有其他應(yīng)用程序的等等。

|重大意義

各位云廠商的同志們有福了,利用這個參數(shù)就可以保證服務(wù)器(虛擬機(jī)或者容器)擴(kuò)展以后,MySQL能“自適應(yīng)”以盡量消耗更多的服務(wù)器資源,而不用自己設(shè)計一個自動擴(kuò)展MySQL服務(wù)器資源配置的腳本。既避免了服務(wù)器擴(kuò)展以后MySQLbuffer pool不變等,使用不了那么多資源;也避免了服務(wù)器縮減了以后MySQLbuffer pool過大等,導(dǎo)致MySQL服務(wù)進(jìn)程啟動不起來。

這個參數(shù)的改變,也意味著:

后續(xù)MySQL的類似參數(shù)會越來越優(yōu)化,DBA排查問題時對MySQL參數(shù)的考慮會越來越少

MySQL的運維DBA的工作越來越簡單了,MySQL也會越來越智能

總結(jié)

以上是生活随笔為你收集整理的lunix mysql 8小时_MySQL 8.0 首个自适应参数横空出世的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。