優化 MySQL: 3 個簡單的小調整

来源:https://www.cnblogs.com/lfs2640666960/archive/2018/03/17/8590332.html
-Advertisement-
Play Games

我並不期望成為一個專家級的 DBA,但是,在我優化 MySQL 時,我推崇 80/20 原則,明確說就是通過簡單的調整一些配置,你可以壓榨出高達 80% 的性能提升。尤其是在伺服器資源越來越便宜的當下。 警告 沒有兩個資料庫或者應用程式是完全相同的。這裡假設我們要調整的資料庫是為一個“典型”的 We ...


我並不期望成為一個專家級的 DBA,但是,在我優化 MySQL 時,我推崇 80/20 原則,明確說就是通過簡單的調整一些配置,你可以壓榨出高達 80% 的性能提升。尤其是在伺服器資源越來越便宜的當下。

警告

  1. 沒有兩個資料庫或者應用程式是完全相同的。這裡假設我們要調整的資料庫是為一個“典型”的 Web 網站服務的,優先考慮的是快速查詢、良好的用戶體驗以及處理大量的流量。

  2. 在你對伺服器進行優化之前,請做好資料庫備份!

1、 使用 InnoDB 存儲引擎

如果你還在使用 MyISAM 存儲引擎,那麼是時候轉換到 InnoDB 了。有很多的理由都表明 InnoDB 比 MyISAM 更有優勢,如果你關註性能,那麼,我們來看一下它們是如何利用物理記憶體的:

  • MyISAM:僅在記憶體中保存索引。

  • InnoDB:在記憶體中保存索引和數據。

結論:保存在記憶體的內容訪問速度要比磁碟上的更快。

下麵是如何在你的表上去轉換存儲引擎的命令:

 

 

1

ALTER TABLE table_name ENGINE=InnoDB;

註意:你已經創建了所有合適的索引,對嗎?為了更好的性能,創建索引永遠是第一優先考慮的事情。

2、 讓 InnoDB 使用所有的記憶體

你可以在 my.cnf 文件中編輯你的 MySQL 配置。使用 innodb_buffer_pool_size 參數去配置在你的伺服器上允許 InnoDB 使用物理記憶體數量。

對此(假設你的伺服器僅僅運行 MySQL),公認的“經驗法則”是設置為你的伺服器物理記憶體的 80%。在保證操作系統不使用交換分區而正常運行所需要的足夠記憶體之後 ,儘可能多地為 MySQL 分配物理記憶體。

因此,如果你的伺服器物理記憶體是 32 GB,可以將那個參數設置為多達 25 GB。

 

 

1

innodb_buffer_pool_size = 25600M

*註意:(1)如果你的伺服器記憶體較小並且小於 1 GB。為了適用本文的方法,你應該去升級你的伺服器。 (2) 如果你的伺服器記憶體特別大,比如,它有 200 GB,那麼,根據一般常識,你也沒有必要為操作系統保留多達 40 GB 的記憶體。 *

3、 讓 InnoDB 多任務運行

如果伺服器上的參數 innodb_buffer_pool_size 的配置是大於 1 GB,將根據參數 innodb_buffer_pool_instances 的設置, 將 InnoDB 的緩衝池劃分為多個。

擁有多於一個的緩衝池的好處有:

在多線程同時訪問緩衝池時可能會遇到瓶頸。你可以通過啟用多緩衝池來最小化這種爭用情況:

對於緩衝池數量的官方建議是:

為了實現最佳的效果,要綜合考慮 innodb_buffer_pool_instances 和 innodb_buffer_pool_size 的設置,以確保每個實例至少有不小於 1 GB 的緩衝池。

因此,在我們的示例中,將參數 innodb_buffer_pool_size 設置為 25 GB 的擁有 32 GB 物理記憶體的伺服器上。一個合適的設置為 25600M / 24 = 1.06 GB

 

1

innodb_buffer_pool_instances = 24

 

註意!

在修改了 my.cnf 文件後需要重啟 MySQL 才能生效:

 

 

1

sudo service mysql restart

還有更多更科學的方法來優化這些參數,但是這幾點可以作為一個通用準則來應用,將使你的 MySQL 伺服器性能更好。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天徹底決定了,不再找工作,自己也覺得不適合找工作,實在找不到工作就辦暫緩就業。 說下今天畢設的準備吧,今天算是正式跟著視頻敲代碼了,寫了些SQL,把表建好了。 下麵是具體的SQL,但是過程怎麼寫的就不展開講了吧,主要講遇到的問題。 暫時是只有5張表,但是老師畢竟是個教前端的,連他自己都說這個表建的 ...
  • 一、簡述 MongoDB中使用find來進行查詢。查詢就是返回一個集合中文檔的子集,子集合的範圍從0個文檔到整個集合。預設情況下,"_id"這個鍵總是被返回,即便是沒有指定要返回這個鍵。("_id"是一個集合中每個文檔的唯一標識) 查詢的使用上有限制,傳遞給資料庫的查詢文檔必須是常量。(當然,在你的 ...
  • 下載安裝包 到官網下載MariaDB 10.2系列穩定版的源碼包 選擇源碼包 點擊鏈接後頁面會跳到下載頁面,頁面中有個信息表格可以填寫,這裡我們就直接跳過,點擊 No thanks, just take me to the download,保存源碼包 把源碼包保存到: 解壓: 編譯前準備工作 安裝 ...
  • 本文中使用的例子均在下麵的資料庫表tt2下執行: 一、concat()函數 1、功能:將多個字元串連接成一個字元串。 2、語法:concat(str1, str2,...) 返回結果為連接參數產生的字元串,如果有任何一個參數為null,則返回值為null。 3、舉例: 例1:select conca ...
  • 海明校驗碼是在n個數據位之外增設k個校驗位,從而形成一個k+n位的新的碼字,使新的碼字的碼距比較均勻地拉大。n與k的關係是(1)。 (1)A.2k-1>=n+k B.2k-1<=n+k C.n=k D.n-1<=k 【答案】A 【解析】本題考查校驗碼方面的基礎知識。 海明碼是一種多重(複式)奇偶檢錯 ...
  • MySQL官方將prepare、execute、deallocate統稱為PREPARE STATEMENT,習慣稱其為【預處理語句】,下麵是對其詳細的介紹。 示例代碼 PREPARE stmt_name FROM preparable_stmt EXECUTE stmt_name [USING @ ...
  • 轉載於https://www.cnblogs.com/aiyr/p/6830593.html mysql CONCAT()函數用於將多個字元串連接成一個字元串,是最重要的mysql函數之一,下麵就將為您詳細介紹mysql CONCAT()函數,供您參考 mysql CONCAT(str1,str2, ...
  • 前言 筆者在分類中的Hbase欄目之前已經分享了hbase的安裝以及一些常用的shell命令的使用,這裡不僅僅重新複習一下shell命令,還會介紹hbase的DDL以及DML的相關操作。 一、hbase的shell操作 1.1啟動hbase shell 在hbase的安裝目錄的bin目錄下麵啟動我們 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...