最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

解決方案:深色大氣的科技公司網(wǎng)站源碼,自適應布局設計,帶完整演示數據

優(yōu)采云 發(fā)布時(shí)間: 2022-12-10 02:46

  解決方案:深色大氣的科技公司網(wǎng)站源碼,自適應布局設計,帶完整演示數據

  

  短信 | 管理用戶(hù)頭像管理

  

  解決方法:這些 MySQL 最樸素的監控方式!用完愛(ài)不釋手!

  目前數據庫的監控方式有很多,分為內置數據庫、商業(yè)、開(kāi)源三大類(lèi),各有特點(diǎn);而對于mysql數據庫,由于社區活躍度高,所以監控方式也很多,不管是哪種監控方式,核心都是監控數據。獲取綜合監控數據后,就是柔性展示部分。

  那么今天我們就來(lái)介紹一下使用mysql自帶的方法采集來(lái)獲取監控數據,在單系統下是最快、最方便、損耗最小的。

  這次文章充分利用mysql自帶的show命令實(shí)現獲取,從connects、buffercache、lock、SQL、statement、Database throughputs、serverconfig7獲取監控數據。

  連接數(Connects)

  最大使用連接數:

  show?status?like?‘Max_used_connections’

  當前打開(kāi)的連接數:

  show?status?like?‘Threads_connected’

  緩存(bufferCache)

  未從緩沖池中讀取的次數:

  show?status?like?‘Innodb_buffer_pool_reads’

  從緩沖池中讀取的次數:

  show?status?like?‘Innodb_buffer_pool_read_requests’

  緩沖池中的總頁(yè)數:

  show?status?like?‘Innodb_buffer_pool_pages_total’

  緩沖池中空閑的頁(yè)數:

  show?status?like?‘Innodb_buffer_pool_pages_free’

  緩存命中率計算:

 ?。?-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100%

  緩存池使用情況為:

  ((Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total)*100%

  鎖

  等待的鎖數:

  show?status?like?‘Innodb_row_lock_waits’

  每個(gè)鎖的平均等待時(shí)間:

  show?status?like?‘Innodb_row_lock_time_avg’

  檢查表鎖:

  show?open?TABLES?where?in_use>0;

  如果有數據,說(shuō)明有鎖表,如果為空,說(shuō)明沒(méi)有表鎖

  備注:鎖等待統計的統計次數為累計數據,每次獲取可以減去之前的數據,得到當前的統計數據

  數據庫

  檢查mysql開(kāi)關(guān)是否打開(kāi):

  show variables like ‘slow_query_log’;

  

  ON為開(kāi)啟,為OFF則設置global slow_query_log=1開(kāi)啟

  查看mysql閾值:

  show variables like ‘long_query_time’;

  根據頁(yè)面傳輸閾值參數,修改閾值設置global long_query_time=0.1

  查看mysql慢sql目錄:

  show variables like ‘slow_query_log_file’;

  格式化慢sql日志:

  mysqldumpslow?-s?at?-t?10?/export/data/mysql/log/slow.log

  注意:該語(yǔ)句不能通過(guò)jdbc執行,屬于命令行執行。

  意思是:顯示最長(cháng)的10條SQL語(yǔ)句的執行信息,10可以修改為T(mén)OP的個(gè)數。顯示的信息有:執行次數、平均執行時(shí)間、SQL語(yǔ)句

  備注:當mysqldumpslow命令執行失敗時(shí),慢日志會(huì )同步到本地進(jìn)行格式化。

  陳述

  插入數量:顯示狀態(tài)如 'Com_insert'

  刪除數量:顯示狀態(tài)如“Com_delete”

  更新數量:顯示狀態(tài)如 'Com_update'

  選擇數量:顯示狀態(tài)如 'Com_select'

  吞吐量(數據庫吞吐量)

  發(fā)送吞吐量:顯示狀態(tài),如“Bytes_sent”

  接收吞吐量:顯示狀態(tài),如“Bytes_received”

  總吞吐量:Bytes_sent+Bytes_received

  數據庫參數(serverconfig)

  顯示變量

  慢SQL

  慢SQL是指MySQL慢查詢(xún),特別是運行時(shí)間超過(guò)long_query_time值的SQL。

  我們經(jīng)常聽(tīng)說(shuō)MySQL有二進(jìn)制日志binlog、中繼日志relaylog、重做回滾日志redolog、undolog等。對于慢查詢(xún),還有慢查詢(xún)日志slowlog,用于記錄MySQL中響應時(shí)間超過(guò)閾值的語(yǔ)句.

  慢SQL對實(shí)際生產(chǎn)業(yè)務(wù)的影響是致命的,因此測試人員在性能測試時(shí)監控數據庫SQL語(yǔ)句的執行情況,為開(kāi)發(fā)提供準確的性能優(yōu)化建議就顯得尤為重要。那么如何利用Mysql數據庫提供的慢查詢(xún)日志來(lái)監控SQL語(yǔ)句的執行情況,找出高消耗的SQL語(yǔ)句。下面詳細介紹慢查詢(xún)日志的使用步驟:

  這個(gè)long_query_time用來(lái)定義慢于多少秒時(shí)的“慢查詢(xún)”。注意單位是秒。我通過(guò)執行sql命令set long_query_time=1將long_query_time的值設置為1,也就是執行時(shí)間超過(guò)了1秒。計算慢查詢(xún),如下:

  使用慢sql分析工具mysqldumpslow對慢SQL日志進(jìn)行格式化分析 mysqldumpslow慢查詢(xún)分析工具,mysql安裝后自帶??梢酝ㄟ^(guò)./mysqldumpslow --help查看參數說(shuō)明

  常見(jiàn)用法:

  取出 10 個(gè)最常用的慢查詢(xún)

  ./mysqldumpslow?-s?c?-t?10?/export/data/mysql/log/slow.log

  取出查詢(xún)時(shí)間最慢的3個(gè)慢查詢(xún)

  ./mysqldumpslow?-s?t?-t?3?/export/data/mysql/log/slow.log

  注意:使用mysqldumpslow的分析結果不會(huì )顯示具體完整的sql語(yǔ)句,只會(huì )顯示sql的組成結構;

  假如:?SELECT?FROM?sms_send?WHERE?service_id=10?GROUP?BY?content?LIMIT?0,?1000;

<p>

mysqldumpslow 命令執行后顯示:

Count:?2?Time=1.5s?(3s)?Lock=0.00s?(0s)?Rows=1000.0?(2000),?vgos_dba[vgos_dba]@[10.130.229.196]SELECT?FROM?sms_send?WHERE?service_id=N?GROUP?BY?content?LIMIT?N,?N

</p>

  mysqldumpslow的詳細分析結果:

  Count:#表示該類(lèi)型的語(yǔ)句執行次數,上圖中表示 select 語(yǔ)句執行了 2 次。

Time:#表示該類(lèi)型的語(yǔ)句執行的平均時(shí)間(總計時(shí)間)

Lock:#鎖時(shí)間?0s。

Rows:#單次返回的結果數是 1000?條記錄,2 次總共返回 2000?條記錄。

  通過(guò)這個(gè)工具,可以找出哪些SQL語(yǔ)句是慢SQL,從而反饋給研發(fā)優(yōu)化,比如加索引,應用的實(shí)現方式等等。

  常見(jiàn)的慢 SQL 故障排除

  沒(méi)有子查詢(xún)

  SELECT?FROM?t1?WHERE?id?(SELECT?id?FROM?t2?WHERE?name=’hechunyang’);

  在MySQL 5.5中,內部執行計劃器是這樣執行子查詢(xún)的:先查外表再匹配內表,而不是先查內表t2。當外表的數據很大時(shí),查詢(xún)速度會(huì )很慢。

  在MariaDB10/MySQL5.6版本中,使用join關(guān)聯(lián)方式進(jìn)行了優(yōu)化,這條SQL會(huì )自動(dòng)轉換為SELECT t1。從 t1 加入 t2 在 t1.id = t2.id;

  但請注意,優(yōu)化僅對 SELECT 有效,對 UPDATE/DELETE 子查詢(xún)無(wú)效。在生產(chǎn)環(huán)境中,盡量避免使用子查詢(xún)。

  避免功能索引

  SELECT?FROM?t?WHERE?YEAR(d)?>=?2016;

  由于MySQL不像Oracle那樣支持函數式索引,即使d字段有索引,也會(huì )直接掃描全表。

  應改為 &gt;SELECT FROM t WHERE d &gt;= '2016-01-01';

  用 IN 替換 OR 低效查詢(xún)

  慢 SELECT FROM t WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30;

  高效查詢(xún)&gt;SELECT FROM t WHERE LOC_IN IN (10,20,30);

  LIKE 雙百分號不能使用索引

  SELECT?FROM?t?WHERE?name?LIKE?‘%de%’;

  利用

  SELECT?FROM?t?WHERE?name?LIKE?‘de%’;

  分組統計可以禁用排序

  SELECT?goods_id,count()?FROM?t?GROUP?BY?goods_id;

  默認情況下,MySQL 對所有 GROUP BY col1, col2... 字段進(jìn)行排序。如果查詢(xún)收錄 GROUP BY 并且你想避免使用排序后的結果,你可以指定 ORDER BY NULL 來(lái)禁用排序。

  使用 SELECT goods_id,count () FROM t GROUP BY goods_id ORDER BY NULL;

  禁止不必要的 ORDER BY 排序

  SELECT?count(1)?FROM?user?u?LEFT?JOIN?user_info?i?ON?u.id?=?i.user_id?WHERE?1?=?1?ORDER?BY?u.create_time?DESC;

  使用 SELECT count (1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id;

  總結

  任何事情都不要過(guò)分注重外表,而要注重內在的東西,往往在華麗的外表下會(huì )有相應的負擔和損失。

  mysql數據庫的監控支持通過(guò)SQL從performance_schema庫中訪(fǎng)問(wèn)對應的表數據,前提是該庫已初始化并開(kāi)啟監控數據寫(xiě)入。

  對于監控,不是手段的多樣性,而是監控的本質(zhì)和需要監控的項目?jì)热?,這樣才能找到適合自己項目特點(diǎn)的監控方式。

  在選擇監控mysql的監控工具時(shí),需要注意監控工具本身對數據庫服務(wù)器的消耗,以免影響自身使用。

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区