欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Mysql磁盤IO占用過(guò)高的問(wèn)題

 更新時(shí)間:2024年04月11日 14:35:43   作者:時(shí)棧  
這篇文章主要介紹了解決Mysql磁盤IO占用過(guò)高的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

背景

在之前的主從同步過(guò)程中(Mysql的多級(jí)復(fù)制),從數(shù)據(jù)庫(kù)Z存在磁盤IO占用過(guò)高的問(wèn)題。

磁盤IO在同步期間占用率達(dá)到100%,且數(shù)據(jù)存在滯后,不能實(shí)現(xiàn)實(shí)時(shí)更新。

從數(shù)據(jù)庫(kù)的磁盤為機(jī)械硬盤,讀寫性能相對(duì)于固態(tài)硬盤要差一點(diǎn)。

一、原因

可能是因?yàn)镸ySQL在日志在每次事務(wù)提交時(shí),都會(huì)將其寫入并刷新到磁盤,造成磁盤IO的高占用。

二、查看配置

通過(guò)在MySQL命令行運(yùn)行以下命令:

show variables like 'sync_binlog';

可以看到:sync_binlog 的值為1。

該值意味著:?jiǎn)⒂迷谔峤皇聞?wù)之前將二進(jìn)制日志同步到磁盤。這是最安全的設(shè)置,但是會(huì)造成磁盤的較高占用。

show variables like 'innodb_flush_log_at_trx_commit';

可以看到:innodb_flush_log_at_trx_commit 的值為1。

該值意味著:日志會(huì)在每次事務(wù)提交時(shí)寫入并刷新到磁盤。

三、配置參數(shù)含義

sync_binlog:控制MySQL服務(wù)器將二進(jìn)制日志同步到磁盤的頻率

  • 默認(rèn)值:1
  • 最小值:0
  • 最大值:4294967295

sync_binlog=0:禁用 MySQL 服務(wù)器將二進(jìn)制日志同步到磁盤。相反,MySQL服務(wù)器依賴于操作系統(tǒng)不時(shí)將二進(jìn)制日志刷新到磁盤,就像它對(duì)任何其他文件所做的那樣。此設(shè)置提供最佳性能,但在發(fā)生電源故障或操作系統(tǒng)崩潰時(shí),服務(wù)器可能已提交尚未同步到二進(jìn)制日志的事務(wù)。

sync_binlog=1:啟用在提交事務(wù)之前將二進(jìn)制日志同步到磁盤。這是最安全的設(shè)置,但由于磁盤寫入次數(shù)增加,可能會(huì)對(duì)性能產(chǎn)生負(fù)面影響。如果發(fā)生電源故障或操作系統(tǒng)崩潰,二進(jìn)制日志中缺少的事務(wù)僅處于就緒狀態(tài)。這允許自動(dòng)恢復(fù)例程回滾事務(wù),從而保證二進(jìn)制日志中不會(huì)丟失任何事務(wù)。

sync_binlog=N,其中 N 是 0 或 1 以外的值:收集二進(jìn)制日志提交組后,二進(jìn)制日志將同步到磁盤。如果發(fā)生電源故障或操作系統(tǒng)崩潰,服務(wù)器可能已提交尚未刷新到二進(jìn)制日志的事務(wù)。由于磁盤寫入次數(shù)增加,此設(shè)置可能會(huì)對(duì)性能產(chǎn)生負(fù)面影響。值越高,性能越高,但數(shù)據(jù)丟失的風(fēng)險(xiǎn)也會(huì)增加。

  • innodb_flush_log_at_trx_commit:控制提交操作的嚴(yán)格 ACID 合規(guī)性與重新排列并批量完成與提交相關(guān)的 I/O 操作時(shí)可能實(shí)現(xiàn)的更高性能之間的平衡。
  • 默認(rèn)值為1
  • 有效值為:0、1、2

可以通過(guò)更改默認(rèn)值來(lái)獲得更好的性能,但隨后可能會(huì)在崩潰中丟失事務(wù)。

  • innodb_flush_log_at_trx_commit=1 :完全符合 ACID 所必需的。日志在每次事務(wù)提交時(shí)寫入并刷新到磁盤。
  • innodb_flush_log_at_trx_commit=0:每秒將日志寫入磁盤并刷新一次。尚未刷新其日志的事務(wù)可能會(huì)在崩潰中丟失。
  • innodb_flush_log_at_trx_commit=2:在每次事務(wù)提交后寫入日志,并每秒刷新一次到磁盤。尚未刷新其日志的事務(wù)可能會(huì)在崩潰中丟失。

對(duì)于設(shè)置 0 和 2,不能 100% 保證每秒一次刷新。

由于 DDL 更改和其他內(nèi)部活動(dòng)導(dǎo)致獨(dú)立于innodb_flush_log_at_trx_commit設(shè)置刷新日志,刷新可能會(huì)更頻繁地發(fā)生,有時(shí)由于計(jì)劃問(wèn)題而降低刷新頻率。

如果每秒刷新一次日志,則崩潰時(shí)最多可能會(huì)丟失一秒鐘的事務(wù)。

如果刷新日志的頻率高于或低于每秒一次的頻率,則可能丟失的事務(wù)量會(huì)相應(yīng)地變化。

四、通過(guò)修改配置解決問(wèn)題

注意:

這種解決辦法是在犧牲數(shù)據(jù)庫(kù)安全的前提下,提高磁盤的性能?。?!

更改配置可能會(huì)帶來(lái)更高的數(shù)據(jù)丟失風(fēng)險(xiǎn)?。?!

可以通過(guò)以下兩條命令修改配置。 

set global sync_binlog=你希望的值;
set global innodb_flush_log_at_trx_commit=你希望的值;

更多設(shè)置請(qǐng)參考:

MySQL的二進(jìn)制日志記錄選項(xiàng)和變量

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • jdbc中自帶MySQL?連接池實(shí)踐示例

    jdbc中自帶MySQL?連接池實(shí)踐示例

    這篇文章主要為大家介紹了jdbc中自帶MySQL連接池實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪問(wèn)權(quán)限設(shè)置方式

    MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪問(wèn)權(quán)限設(shè)置方式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪問(wèn)權(quán)限設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • mysql忘記密碼重置的方法實(shí)現(xiàn)

    mysql忘記密碼重置的方法實(shí)現(xiàn)

    本文主要介紹了mysql忘記密碼重置的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • InnoDB 類型MySql恢復(fù)表結(jié)構(gòu)與數(shù)據(jù)

    InnoDB 類型MySql恢復(fù)表結(jié)構(gòu)與數(shù)據(jù)

    MySQL中.frm文件:保存了每個(gè)表的元數(shù)據(jù),包括表結(jié)構(gòu)的定義等,該文件與數(shù)據(jù)庫(kù)引擎無(wú)關(guān)。MySQL中.ibd文件:InnoDB引擎開(kāi)啟了獨(dú)立表空間(my.ini中配置innodb_file_per_table = 1)產(chǎn)生的存放該表的數(shù)據(jù)和索引的文件。
    2018-01-01
  • MySQL可重復(fù)讀隔離級(jí)別下開(kāi)啟事務(wù)的問(wèn)題解決

    MySQL可重復(fù)讀隔離級(jí)別下開(kāi)啟事務(wù)的問(wèn)題解決

    本文主要介紹了MySQL可重復(fù)讀隔離級(jí)別下開(kāi)啟事務(wù)的問(wèn)題解決,詳解在Repeatable?Read隔離級(jí)別下,mysql的快照生成時(shí)機(jī)的問(wèn)題,感興趣的可以了解一下
    2024-07-07
  • MySQL8.0 DDL原子性特性及實(shí)現(xiàn)原理

    MySQL8.0 DDL原子性特性及實(shí)現(xiàn)原理

    這篇文章主要介紹了MySQL8.0 DDL原子性特性及實(shí)現(xiàn)原理,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • mysql本地登錄無(wú)法使用端口號(hào)登錄的解決方法

    mysql本地登錄無(wú)法使用端口號(hào)登錄的解決方法

    這篇文章主要介紹了mysql本地登錄無(wú)法使用端口號(hào)登錄的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 關(guān)于MyBatis連接MySql8.0版本的配置問(wèn)題

    關(guān)于MyBatis連接MySql8.0版本的配置問(wèn)題

    這篇文章主要介紹了關(guān)于MyBatis連接MySql8.0版本的配置問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • mysql中的各種約束條件深入探討

    mysql中的各種約束條件深入探討

    在mysql中對(duì)編輯的數(shù)據(jù)進(jìn)行類型的限制,不滿足約束條件的報(bào)錯(cuò),本文給大家分享mysql中的各種約束條件,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-05-05
  • MySQL字符集亂碼及解決方案分享

    MySQL字符集亂碼及解決方案分享

    這篇文章主要給大家介紹了關(guān)于MySQL字符集亂碼及解決方案的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論