中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL如何優化性能

發布時間:2022-09-22 14:04:17 來源:億速云 閱讀:125 作者:iii 欄目:MySQL數據庫

本文小編為大家詳細介紹“MySQL如何優化性能”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MySQL如何優化性能”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

- MySQL服務器配置:\

好吧,首先你應該知道配置文件的位置,具體取決于你的操作系統。在 Linux 系統中,它位于“/etc/mysql/my.cnf”中。\
現在是時候選擇你的引擎 InnoDB 和 MyISAM 了。為了讓選擇更容易,你應該知道 InnoDB 成為 MySQL 5.5 的默認引擎,因為它支持“行級鎖定、外鍵和事務”,而 MyISAM 不支持任何提到的特性,這使得它在現代很少有用應用程序。\
選擇正確的引擎后,是時候在 my.cnf 文件中設置一些配置變量了。

max_connection 變量:\

max_connection 變量表示應用程序允許的連接數。默認值為 151 連接,但是,如果你收到錯誤消息“MySQL 錯誤,連接太多...”,你可以輕松增加此數量\

最大連接數 = 170

innodb_buffer_pool_size 變量:\

為了加快速度,MySQL 會將數據緩存在你的服務器內存中,這個變量告訴 MySQL 它可以使用多少 GigaBytes。如果你在數據庫中保存大 blob,此變量非常有用。你可以將其設置為服務器內存的 80–90%。因此,如果你的服務器內存為 16GB,則可以將其設置為 14GB。

innodb_buffer_pool_size = 14GB

innodb_io_capacity 變量:\

這個變量告訴 MySQL 它可以使用多少輸入/輸出操作,它取決于你的磁盤。例如,單個 7200 RPM 驅動器限制為 200 I/O,而企業 SSD 磁盤限制為 50,000 I/O。你可以在操作系統上通過命令行輕松找到輸入/輸出值,并將變量設置為可用 I/O 的 90%,因此 MySQL 永遠不會使用太多 I/O 操作。

innodb_io_capacity = 21000

query_cache_limit 和 query_cache_size 變量:\

MySQL 也支持內存中緩存數據,但是我們不能依賴它來做緩存系統,因為每次你的程序向數據庫表寫入數據的時候,MySQL 將會重建整個表的查詢緩存。因此如果你的程序有很高的負載,MySQL 緩存將完全無用,這種情況下,兩個變量最好設置為0,節省MySQL緩存的開銷,相反,你可以使用類似 Redis 的東西來管理緩存。

query_cache_limit = 0

query_cache_size = 0

慢查詢日志:\

慢查詢日志將會顯示你的哪些查詢超過你定義的閾值,而不需要猜測哪個查詢更慢。\
首先,你必須在你的配置文件中啟用 slow_query_log 。在Linux服務器中,打開 「/etc/mysql/my.cnf」或者你系統上同等的文件。\
并添加:

slow_query_log = 1

long_query_time = 1

那么,這兩個選項將啟用慢查詢日志,并記錄任何需要超過一秒的查詢。如果你喜歡在一個表中而不是在一個文件中查看日志,你可以添加:

log_output = 'TABLE'

然后你可以在「slow_log」表中找到你的日志。你可以在那里看到所有執行超過一秒的慢查詢的信息。這些信息包括查詢的確切執行時間和受影響的行數,以及哪個用戶執行的它。

查詢優化\

在你得到所有的慢查詢后,你需要一種方式來優化它們,使它們更快。因此,你可以在查詢語句前面加上「explain」關鍵詞,從而獲得相關查詢的詳情信息,例如:explain select * from users where active=1;

「解釋」關鍵字可以幫助你定義查詢命中哪些索引以及為獲取數據而查詢的行數。此信息可以告訴你是否需要創建更多索引或重組數據庫表。

非規范化和約束:\

非規范化是通過添加冗余數據或將它們分組來提高讀取性能的過程。例如,如果你有一個「產品」表和一個「類別」表,并且每次查詢「產品」表時,你還需要獲取每個產品的「類別名稱」。在這種情況下,你可以使用「join」來檢索「category_name」。但是,這意味著每次用戶打開產品頁面時,都會執行一個復雜的連接查詢。因此,你可以考慮在「產品」表中添加「類別名稱」。盡管有冗余數據,但讀取性能的提高還是值得的。

非規范化方法可能會導致「產品」表中的「類別名稱」過時。所以你需要定義一個「外鍵」約束,但是你需要知道一個「外鍵」會使寫入性能稍微變慢,因為 MySQL 需要在寫入數據之前檢查約束。所以做出最佳選擇始終是你的任務。

讀到這里,這篇“MySQL如何優化性能”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇雄县| 东乌珠穆沁旗| 明溪县| 徐州市| 修武县| 会昌县| 南岸区| 上饶市| 屏山县| 抚松县| 彩票| 南昌市| 竹溪县| 双辽市| 吴川市| 鄂伦春自治旗| 延川县| 启东市| 衡山县| 宣化县| 襄城县| 浦县| 枝江市| 丹巴县| 金阳县| 高要市| 漯河市| 汝城县| 灌南县| 定兴县| 卓尼县| 四会市| 定陶县| 务川| 会理县| 从化市| 枞阳县| 尼木县| 玉山县| 南和县| 漯河市|