电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL性能突然下降的原因

瀏覽:4日期:2023-10-10 15:49:50

有時會碰到這樣的情況,一條 SQL 在平時執行沒問題,很快。但是突然某個時間執行的就會很慢,而且這種場景并不能復現,只能隨機發送的。

SQL 執行突然變慢的原因

在之前講解 MySQL Redo log 時,說到了 WAL 機制,為了保證 MySQL 更新的速度,在進行更新操作時,先將更新內容寫入 redo log,后續系統空閑時,再將 redo log 的內容應用到磁盤。

當內存數據頁(redo log)和磁盤數據頁內容不一致時,將該內存也稱為 “臟頁”。將內存數據寫入到磁盤后,數據一致,內存頁稱為 '干凈頁'。

在內存數據寫入磁盤時,這個過程稱為 flush 過程。SQL 突然執行變得很慢,性能下降。原因就可能和 flush 操作有關。

因為在進行 flush 操作時,更新操作會等待 redo log 的寫入。

引起 flush 操作的原因

場景一:redo log 日志已經記滿。這時系統會停止更新操作,將 check point 向前推進,讓 redo log 留出空間可以繼續寫。

MySQL性能突然下降的原因

這里假設 CP 到 CP‘ 間隙已經寫入到磁盤,這部分就變成了干凈頁,此時 write pos 就可以寫入這部分區域了。

場景二:系統內存不足,需要新的內存頁時,發現內存不夠用了,就需要淘汰一些數據頁。如果淘汰時,這時數據頁時臟頁,就要將臟頁寫到磁盤。

這時有個問題是,命名 redo log 中的內容已經被記錄到日志中了,假如內存滿了,直接刪除不就可以嗎?下次讀入時,再把 redo log 日志中的內容應用到磁盤。

沒有選擇直接清空內存,是從性能考慮的,因為在查詢數據時,有兩種情況:

首先數據頁在內存中,內存是就是正確的結果,直接返回 內存里沒有數據,從數據文件上讀入內存。

所以這樣效率比較高。

場景三:MySQL 會在系統空閑時,進入 flush 操作。

場景四:在 MySQL 正常關閉時,會把內存臟頁 flush 到磁盤上。

引起 flush 對性能的影響

對于第三,四場景來說,是比較正常的情況,不需要考慮性能問題。

對于第一種場景,InnoDB 會盡量避免,因為在這種情況下,整個系統不再接受更新。

但有時出現人為的配置錯誤,比如內存為 128 GB,innodb_io_capacity 設置為 20000 的實例。通常建議將 redo log 設置成 4 個 1GB 的文件。但由于配置錯誤,設置成 100M 的文件。

這里由于 redo log 設置的太小,很快就會被寫滿。write pos 一直追著 check point. 這時,系統只能停止所有更新,推進 checkpoint.

表現就是,磁盤 IO 很小,但是出現間歇性的性能下降。

對于第二種場景,內存不夠用的情況,InnoDB 會用緩沖池(buffer pool)管理內存

內存頁在緩沖池中會有三種狀態:

沒用使用的數據頁 使用了,但是是干凈頁 使用了,是臟頁

每個數據頁頭部有LSN,8字節,每次修改都會變大。

對比這個 LSN 跟 checkpoint 的 LSN,比checkpoint小的一定是干凈頁

由于 InnoDB 的策略是盡可能使用內存,所以對于長時間運行的庫來說,未被使用的頁面很少。

當發現想讀入的數據頁沒有在內存中時,必須到緩沖池申請數據頁。并會把最久不用得數據頁從內存中淘汰

如果是干凈頁,直接釋放使用如果是臟頁,必須先刷盤,變成干凈頁才能復用當時,如果在下面的情況進行刷臟頁,會明顯影響性能:

要淘汰的臟頁太多,導致查詢響應時間較長。日志寫滿,更新被阻塞。為了解決這個問題,InnoDB 使用控制臟頁比例的機制,來避免上面的情況。

InooDB 控制刷臟頁的策略

在 InnoDB 中,通過 innodb_io_capacity 參數,來告訴 InnoDB 目前主機的磁盤能力是多少,這個值建議設置成磁盤的 IOPS.

可以通過 fio 這個工具來測試:

fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest

由于 innodb_io_capacity 導致的性能問題很常見,比如有時系統吞吐量(TPS)很低,寫入很慢,但是磁盤 IO 并不高。就有可能是該參數設置的不正確。例如,innodb_io_capacity 的值設置的很低,但是磁盤用的 SSD,導致 InooDB 認為系統能力很差,所以刷臟頁特別慢。造成臟頁累計,影響查詢和更新性能。

InnoDB 在刷盤時主要考慮兩個因素:

臟頁的比例 redo log 寫盤速度

會通過這兩個因素單獨先算出兩個數字。

innodb_max_dirty_pages_pct 臟頁比例上限,默認 75%.

InnoDB 會根據臟頁的比例(M),算出范圍在 0 - 100 的數字。,過程稱為 F1(M)

# M 臟頁比例F1(M){ if M>=innodb_max_dirty_pages_pct then return 100; return 100*M/innodb_max_dirty_pages_pct;}

除此之外,InnoDB 每次寫入日志都會有一個序號 N. 然后根據 N 再算出一個 0 到 100 的數字,這個計算過程稱為 F2(N)

N: 當前寫入的序號和 checkpoint 對應序號之間的差值。

最后,根據 F1(M)和 F2(N)兩個值,取其中較大的值為 R,之后引擎就可以按照 innodb_io_capacity * R 來控制刷臟頁的速度。

所以無論是在查詢,需要加載數據到內存數據頁,而淘汰臟頁。還是更新時,導致刷盤操作都有可能造成 MySQL 的性能下降。

為了避免這種情況,要合理的設置 innodb_io_capacity 的值,平時要多關注臟頁比例,不讓其接近 75%.

其中臟頁比例可以通過下面的方式獲取:

mysql> use performance_schema;mysql> select VARIABLE_VALUE into @a from global_status where VARIABLE_NAME = ’Innodb_buffer_pool_pages_dirty’;select VARIABLE_VALUE into @b from global_status where VARIABLE_NAME = ’Innodb_buffer_pool_pages_total’;select @a/@b;

初次之外,在一個查詢操作進行時,如果需要 flush 臟頁的話,如果這個該臟頁的鄰居也是臟頁的話,就會把這個鄰居一起刷掉,如果恰好旁邊還是臟頁的話,就會一直連坐。這時導致 flush 過慢的原因。

可以通過 innodb_flush_neighbors 來控制該行為,值為 1 打開上述機制,為 0 則關閉。

對于機械硬盤來說,是可以減少很多隨機 IO ,因為機械硬盤 IOPS 一般就幾百,減少隨機 IO 就意味著性能提升。

但如果用 SSD 這類 IOPS 較高的設備,IOPS 往往不是瓶頸,關閉就好,減少 SQL 語句的響應時間。

在 8.0 中,已經默認是 0 了.

總結

這篇中,主要介紹了 WAL 時的 flush 操作可能會造成 MySQL 突然的性能下降。

引起的原因一般是由于內存不夠導致的,進而可以通過設置合適的 innodb_io_capacity 參數,來控制 InnoDB flush 的過程。

以上就是MySQL性能突然下降的原因的詳細內容,更多關于MySQL性能下降的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 科客,主见不成见| 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 万家财经_财经新闻_在线财经资讯网 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 制冷采购电子商务平台——制冷大市场 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 数控走心机-走心机价格-双主轴走心机-宝宇百科 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 翅片管换热器「型号全」_厂家-淄博鑫科环保| 中原网视台| 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 |