日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

简易mysql优化_优化 MySQL:简单三个技巧

發布時間:2025/3/20 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简易mysql优化_优化 MySQL:简单三个技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:優化 MySQL:簡單三個技巧

技巧#1:為臨時表分配足夠的內存

在某些情況下,服務器在處理語句時會創建內部臨時表。臨時表用于內部操作如GROUP BY和distinct,還有一些ORDER BY查詢以及UNION和FROM子句(派生表)中的子查詢。這些都是在內存中創建的內存表。內存中臨時表的最大大小由tmp_table_size和max_heap_table_size中較小的值確定。如果臨時表的大小超過這個閾值,則將其轉換為磁盤上的InnoDB或MyISAM表。此外,如果查詢涉及BLOB或TEXT列,而這些列不能存儲在內存表中,臨時表總是直接指向磁盤。

這種轉換的代價很大,所以考慮增加max_heap_table_size和tmp_table_size變量的大小來幫助減少在磁盤上創建臨時表的數量。請記住,這將需要大量內存,因為內存中臨時表的大小是基于“最壞情況”的。例如,內存表總是使用固定長度的列,所以字符列使用VARCHAR(255)。這可以使內存中的臨時表比想象的要大得多—事實上,這比查詢表的總大小要大很多倍!當增加max_heap_table_size和tmp_table_sizevariables的大小時,一定要監視服務器的內存使用情況,因為內存中的臨時表可能會增加達到服務器內存容量的風險。

一般來說,32M到64M是建議值,從這兩個變量開始并根據需要進行調優。

在Monyog中的臨時表監測

臨時表的監測是許多預定義的Monyog監測之一。它提供了一些臨時表使用的指標,包括:

允許的最大值:顯示tmp_table_size服務器變量的值,它定義了在內存中創建的臨時表的最大大小。與max_heap_table_size一起,這個值定義了可以在內存中創建的臨時表的最大大小。如果內存臨時表大于此大小,則將其存儲在磁盤上。

內存表的最大大小:顯示max_heap_table_size服務器變量的值,該值定義了顯式創建的MEMORY存儲引擎表的最大大小。

創建的臨時表總數:顯示created_tmp_tables服務器變量的值,它定義了在內存中創建的臨時表的數量。

在磁盤上創建的臨時表:顯示created_tmp_disk_tables服務器變量的值,該變量定義了在磁盤上創建的臨時表的數量。如果這個值很高,則應該考慮增加tmp_table_size和max_heap_table_size的值,以便增加創建內存臨時表的數量,從而減少在磁盤上創建臨時表的數量。

磁盤:總比率:基于created_tmp_disk_tables除以created_tmp_tables的計算值。由于tmp_table_size或max_heap_table_size不足而在磁盤上創建的臨時表的百分比。Monyog將這個數字顯示為一個進度條和百分比,以便快速確定有多少磁盤用于臨時表,而不是內存。

趨勢圖可用于創建的總表,磁盤上創建的表和磁盤的總比值。這些讓我們看到了它們隨著時間的演變:

技巧#2:使用 InnoDB 存儲引擎

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

MyISAM:僅在內存中保存索引。

InnoDB:在內存中保存索引和數據。

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

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

ALTER TABLE table_name ENGINE=InnoDB;

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

技巧#3:其他相關的服務器變量

除了上述指標以外,還應該監控以下內容:

InnoDB緩沖池大小: InnoDB緩沖池大小在使用InnoDB的MySQL數據庫中起著至關重要的作用。緩沖池同時緩存數據和索引。它的值應該盡可能的大,以確保數據庫使用內存而不是硬盤驅動器進行讀取操作。

臨時表大小: MySQL使用max_heap_table_size和tmp_table_size中較小的一個來限制內存中臨時表的大小。擁有較大的值可以幫助減少在磁盤上創建臨時表的數量,但也會增加服務器內存容量的風險,因為這個指標適用于每個客戶端。一般來說,32M到64M是建議的值,從這兩個變量開始并根據需要進行調優。

InnoDB日志緩沖區大小: MySQL每次寫入日志文件時,它都會利用可用于處理銷售數據的重要系統資源。因此,將InnoDB日志緩沖區大小設置為較大值才有意義。這樣,服務器在大型事務中寫入磁盤的次數就減少了,從而最大限度地減少了這些耗時的操作。64M是這個變量的一個很好的起點。

責任編輯:

總結

以上是生活随笔為你收集整理的简易mysql优化_优化 MySQL:简单三个技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。