成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL極具參考價值的性能調優技巧

數據庫 MySQL
針對購物旺季網站流量會對數據庫造成的壓力,作者給出了MySQL性能調優的一些技巧,這些技巧極具參考價值,通過這些調優,可以有效避免因為流量過大造成服務器宕機,從而給企業造成經濟損失。

MySQL***參考價值的性能調優技巧

萬圣節已經過去很久了,該是把注意力集中在即將到來的假日季節的時候了。首先是感恩節,接著就是黑色星期五和網絡星期一,最終在圣誕節/節禮周(從12月26日的節禮日開始,到12月31日的除夕結束為期六天或更長時間。這個詞是由零售業在2000年代中期左右發明的,試圖延長他們的節禮日銷售)達到購物高潮。對于企業主來說,一年的這個時候標志著人們期待已久的年底獲利了結。對于一些DBA來說,它會帶來恐懼,不安,甚至是不眠之夜,他們要努力使系統重新上線。

值得慶幸是,情況并非如此。通過對MySQL性能變量做一些主動調整,可以使數據庫服務器免受購物旺季帶來的需求增加的沖擊。

技巧#1:確定MySQL的***連接數

對于MySQL的***連接數,一次***是發送5個請求到Web服務器。對Web服務器的5個請求中的一部分將用于CSS樣式表,圖像和腳本等資源。由于諸如瀏覽器緩存等原因,要獲得準確的MySQL到Web服務器的請求比率可能很困難; 要想得到一個確切的數字,就需要分析Web服務器的日志文件。例如,可以手動訪問Apache的“access_log”日志文件,也可以通過 Analog 或 Webalizer 等實用程序訪問日志文件。

一旦有了對特定使用情況的準確估計,請將該比率乘以Web服務器的***連接數。例如,如果Web服務器配置為最多為256個客戶端提供服務,MySQL請求與Web請求的比率為1/8,則***將***數據庫連接數設置為32。還要考慮留有安全余量,把這個數乘以2,得到最終的數量。只有在基礎設施支持的情況下,才能嘗試將數據庫連接數的***數量與Web服務器的客戶端限制相匹配。在大多數情況下,***保持接近32。

在Monyog中查看MySQL連接

在MySQL數據庫中,MySQL的***并發連接數是存儲在全局變量max_connections中的。Monyog報告變量“ max_connections”作為當前連接監控組中的“***允許”指標。它還將該數字除以打開的連接數,以生成連接使用百分比:

還有一個連接歷史記錄監控,可以幫助計算***的***并發連接數。它包括嘗試,拒絕和成功連接的數量。此外,允許達到的***指標的百分比顯示為一個進度條,可以讓你快速評估服務器在過去達到的***并發連接數:

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

在某些情況下,服務器在處理語句時會創建內部臨時表。臨時表用于內部操作如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將這個數字顯示為一個進度條和百分比,以便快速確定有多少磁盤用于臨時表,而不是內存。 趨勢圖可用于創建的總表,磁盤上創建的表和磁盤的總比值。這些讓我們看到了它們隨著時間的演變:

技巧#3:增加線程緩存大小

連接管理器線程處理服務器監聽的網絡接口上的客戶端連接請求。連接管理器線程將每個客戶端連接與專用于它的線程關聯,該線程負責處理該連接的身份驗證和所有請求處理。因此,線程和當前連接的客戶端之間是一對一的比例。確保線程緩存足夠大以容納所有傳入請求是非常重要的。

MySQL提供了許多與連接線程相關的服務器變量:

線程緩存大小由 thread_cache_size系統變量決定。默認值為0(無緩存),這將導致為每個新連接設置一個線程,并在連接終止時需要處理該線程。如果希望服務器每秒接收數百個連接請求,那么應該將 thread_cache_size設置的足夠高,以便大多數新連接可以使用緩存線程。可以在服務器啟動或運行時設置 max_connections的值。

還應該監視緩存中的線程數( Threads_cached)以及創建了多少個線程,因為無法從緩存中獲取線程( Threads_created)。關于后者,如果 Threads_created繼續以每分鐘多于幾個線程的增加,請考慮增加 thread_cache_size的值。

使用MySQL show status命令顯示MySQL的變量和狀態信息。這里有幾個例子:

  1. SHOW GLOBAL STATUS LIKE '%Threads_connected%'
  2.  
  3. +-------------------+-------+ 
  4.  
  5. | Variable_name     | Value | 
  6.  
  7. +-------------------+-------+ 
  8.  
  9. | Threads_connected | 2     | 
  10.  
  11. +-------------------+-------+ 
  12.  
  13. SHOW GLOBAL STATUS LIKE '%Threads_running%'
  14.  
  15. +-----------------+-------+ 
  16.  
  17. | Variable_name   | Value | 
  18.  
  19. +-----------------+-------+ 
  20.  
  21. | Threads_running | 1     | 
  22.  
  23. +-----------------+-------+ 

 

Monyog線程緩存監測

Monyog提供了一個監控線程緩存的屏幕,名為“線程”。與MySQL線程相關的服務器變量映射到以下Monyog指標:

  1. thread_cache_size:可以緩存的線程數。
  2. Threads_cached:緩存中的線程數。
  3. Threads_created:創建用于處理連接的線程.

Monyog線程屏幕還包括“線程緩存***率”指標。這是一個提示線程緩存***率的指標。如果值較低,則應該考慮增加線程緩存。在狀態欄以百分比形式顯示該值;它的值越接近100%越好。

如果這些指標的值等于或超過指定值,則可以將每一個指標配置為發出警告和/或嚴重警報。

其他相關的服務器變量

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

InnoDB緩沖池大小 : InnoDB緩沖池大小在使用InnoDB的MySQL數據庫中起著至關重要的作用。緩沖池同時緩存數據和索引。它的值應該盡可能的大,以確保數據庫使用內存而不是硬盤驅動器進行讀取操作。 臨時表大小 : MySQL使用maxheaptablesize和tmptable_size中較小的一個來限制內存中臨時表的大小。擁有較大的值可以幫助減少在磁盤上創建臨時表的數量,但也會增加服務器內存容量的風險,因為這個指標適用于每個客戶端。一般來說,32M到64M是建議的值,從這兩個變量開始并根據需要進行調優。 InnoDB日志緩沖區大小 : MySQL每次寫入日志文件時,它都會利用可用于處理銷售數據的重要系統資源。因此,將InnoDB日志緩沖區大小設置為較大值才有意義。這樣,服務器在大型事務中寫入磁盤的次數就減少了,從而***限度地減少了這些耗時的操作。64M是這個變量的一個很好的起點。 結論

 

雖然即便是***的公司網站也會因宕機而遭受損失,但這種影響對于處理網上銷售的中小型企業尤其關鍵。根據 最近的一份調查報告 顯示,一分鐘的宕機導致企業平均損失約5000美元。不要讓你的業務成為那種統計數據(因為宕機造成的損失)的一部分。在假日繁忙之前,主動調優MySQL數據庫服務器(S)并收獲回報吧! 

責任編輯:龐桂玉 來源: PHP技術大全
相關推薦

2017-11-27 10:52:42

存儲性能模型

2023-02-07 08:00:00

MySQL數據庫技巧

2011-03-10 14:40:54

LAMPMysql

2013-08-27 13:44:14

MySQL調優技巧

2017-11-17 08:56:59

Java性能優化技巧

2017-07-21 08:55:13

TomcatJVM容器

2012-06-20 11:05:47

性能調優攻略

2024-11-11 08:11:39

2021-03-04 08:39:21

SparkRDD調優

2010-09-26 09:08:17

JVM調優

2010-09-25 15:52:27

JVM內存JVM

2019-11-28 09:25:43

Java調優技巧

2011-05-20 15:02:01

Oracle性能調優

2020-11-30 11:40:35

NginxLinux性能調優

2011-11-14 10:28:23

2022-01-28 15:44:00

Linux服務器技巧

2014-04-24 10:11:17

iOS性能調優

2010-09-25 13:05:07

JVM參數

2018-05-09 08:35:59

2014-12-01 11:30:06

PostgreSQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线视频一区二区 | 综合二区| 亚洲精品1区2区3区 91免费看片 | 青青久久久 | 亚洲男人网 | 日韩午夜一区二区三区 | 中文字幕免费 | 日产精品久久久一区二区福利 | 亚洲美女av网站 | 亚洲精品久久久久中文字幕二区 | 亚洲成人一级片 | 一区二区三区欧美 | 国产精品免费一区二区三区 | 成人国产精品久久 | 欧美日韩亚洲视频 | 国产精品国产精品国产专区不蜜 | 久草免费在线视频 | 成人免费视频观看 | 毛片链接 | 国产成人在线一区二区 | 亚洲国产精品久久久 | 久久黄色网 | 自拍偷拍视频网 | 不卡一区二区三区四区 | 亚洲一区中文 | 九九热九九 | 超碰97免费在线 | 国产精品日韩欧美一区二区三区 | 羞羞视频免费观 | 国产成人精品高清久久 | 草草草草视频 | 亚洲少妇综合网 | 国产日韩欧美一区二区在线播放 | 日韩国产免费观看 | 久久出精品 | 国产精品国产精品国产专区不片 | 免费性视频 | 国产精品视频免费观看 | 久久人人网 | 亚洲黄色av| 网站黄色在线免费观看 |