Mysql存儲寫入速度慢分析

来源:http://www.cnblogs.com/java0619/archive/2017/07/13/7161585.html
-Advertisement-
Play Games

問題背景描述: 在MySQL中執行SQL語句,比如insert,賊慢,明明可能也就只是一行數據的插入,數據量很小,但是耗費的時間卻很多,為什麼?一、存儲結構分析MySQL存儲結構圖:解析:1、讀操作:記憶體讀-->cache緩存讀-->磁碟物理讀讀取到的數據會按上述順序往回送。2、寫操作:記憶體數據直接 ...


 問題背景描述:   在MySQL中執行SQL語句,比如insert,賊慢,明明可能也就只是一行數據的插入,數據量很小,但是耗費的時間卻很多,為什麼?
一、存儲結構分析

MySQL存儲結構圖:



解析:

1、讀操作:記憶體讀-->cache緩存讀-->磁碟物理讀

讀取到的數據會按上述順序往回送。

2、寫操作:記憶體數據直接寫入cache緩存(非常快)-->寫入disk

由上可知,MySQL之所以讀寫速度快,cache在其中起到了關鍵作用。

1、Cache緩存特點:

1、速度快

2、掉電數據丟失

3、容量有限

2、保護數據安全(防止意外掉電的數據丟失)應對措施:

在存儲中,增加BBU(電池備份單元,就是電池),在掉電後,可以把緩存中的數據寫到磁碟中,保證數據不會丟失。

如果沒有提供BBU或者BBU壞了,記憶體數據就不會寫入cache緩存中,就會直接寫入disk中;相較於寫入記憶體,寫入磁碟的速度就大打折扣(萬倍之差)。與此同時,因為慢下來的“寫”占了絕大部分“讀”的帶寬。所以BBU問題是讀寫性能差的一很大的影響因素。

3、cache緩存容量有限

(4G、8G、16G、32G),系統為了保持cache有用,會周期性的將cache緩存的數據寫入磁碟中,避免cache被占滿。

二、存儲寫入速度慢分析

資料庫-->寫入速度慢-->系統hang住
Q:如何判斷寫入速度慢?

A:

1、懷疑BBU問題

監控BBU的bug,解決:重啟BBU

2、cache被占滿(類同於BBU壞了的情況)

1、海量的寫入數據占滿cache緩存,判斷:

shell> iostat -x

mysql> show global status like 'handler_write';

2、cache寫入disk的速度慢了(排水速度遠小於註水速度)

硬碟I/O異常,負載過高:資料庫海量的物理讀(異常SQL),判斷:

mysql> show status like 'Innodb_buffer_pool_reads';

3、存儲性能差問題

1、存儲設備差,更新設備

2、災備同步風險,“再好的工程師,敵不過藍翔的挖掘機、農民工的鋤頭……”

三、關於BBU

英文簡稱:BBU

英文全稱:Battery Backup Unit

中文全稱:電池備份單元,是電池

1、作用:

在掉電後,把緩存中的數據寫到硬碟中,保證數據不會丟失;

是為了意外掉電刷臟數據的一種保護措施;

能夠在系統外部供電失效的情況下,提供後備電源支持,以保證存儲陣列中業務數據的安全性。

2、許多存儲設備都會配備BBU

BBU在電源供應出現問題的時候,為RAID控制器緩存提供電源。當電源斷電時,BBU電力可以使控制器內緩存中的數據可以保存一定時間(根據BBU的型號而決定)。用戶只需要在BBU電力耗盡(電池有限)之前恢復正常供電,緩存中的數據即可被完整的寫回RAID中,避免斷電導致數據丟失。

和伺服器電池有點不一樣,伺服器中,在配置RAID卡的時候可以配一個電池,在系統掉電後,能維持記憶體中的數據不丟失,但時間有限,大約12個小時左右,假如是12小時,如果在12內沒有恢復,記憶體中的數據就會丟失;

3、超級電容

伺服器還有一種保護方式,叫超級電容,也是和RAID卡配套的,他能在伺服器掉電後把緩存中的數據寫入到電容中,而且會永久保存,類似寫入硬碟,實際上是寫入電容,你就理解成寫入U盤把。他比電池好,即使伺服器在12個小時後沒有恢覆電源,也不會造成數據丟失。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、NSThread基本概念 NSThread是基於線程使用,輕量級的多線程編程方法(相對GCD和NSOperation),一個NSThread對象代表一個線程,需要手動管理線程的生命周期,處理線程同步等問題。 二、創建、啟動線程 1、動態實例化 - 先創建再人工啟動 2、靜態實例化 - 創建後自啟 ...
  • 公司的apk越做越大。。。作為一個有追求的程式員,我覺得有必要給apk瘦身了。。。 優化之前,先來分析一下apk結構,下麵附上一張apk結構圖: apk結構.png apk結構.png 由於我這個項目集成了百度地圖、百度導航。。。所以assets和lib各自變態的占了12M+,有種蛋蛋的憂傷。。。百 ...
  • 轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/73468287 本文出自 "【趙彥軍的博客】" 在 Fiddler 中自帶了一個 QuickExec 命令行,用戶可以直接輸入並快速執行腳本命令。 常見命令 help 打開官方的使用頁 ...
  • 經常需要註釋,取消註釋代碼 Ctrl + / 對每段代碼前面添加或者取消 // Ctrl + Shift + / 對代碼添加 或取消 /* */ 實用快捷鍵,持續更新中... ... ...
  • 一,代碼。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"--產生隨機數 %@",[self ge ...
  • xtrabackup是由percona提供的mysql備份工具,它是一款物理備份工具,通過連接資料庫把資料庫的數據備份出來。對於innodb存儲引擎其支持全量備份和增量備份。對於myisam存儲引擎只支持增量備份。因為xtrabackup對innodb的增量備份是基於表空間的LSN進行的,所謂LSN ...
  • 首先是寫一個分割字元串的函數,返回table類型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)RETURN ty_str_splitIS j INT := 0; i INT := 1; ...
  • SparkStreaming與Kafka整合遇到的問題及解決方案 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...