成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql的性能怎么檢查 mysql 查看sql性能

如何監(jiān)控MySQL性能

一,獲取mysql用戶下的進程總數(shù)

豐順ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1

二,主機性能狀態(tài)

# uptime

[root@ ~]# uptime

13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00

三,CPU使用率

# top

# vmstat

四,磁盤IO量

# vmstat 或 # iostat

五,swap進出量[內(nèi)存]

# free

六,數(shù)據(jù)庫性能狀態(tài)

(1)QPS(每秒Query量)

QPS = Questions(or Queries) / seconds

mysql show /*50000 global */ status like 'Question';

(2)TPS(每秒事務(wù)量)

TPS = (Com_commit + Com_rollback) / seconds

mysql show status like 'Com_commit';

mysql show status like 'Com_rollback';

(3)key Buffer 命中率

key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%

key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql show status like 'Key%';

(4)InnoDB Buffer命中率

innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql show status like 'innodb_buffer_pool_read%';

(5)Query Cache命中率

Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

mysql show status like 'Qcache%';

(6)Table Cache狀態(tài)量

mysql show status like 'open%';

(7)Thread Cache 命中率

Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql show status like 'Thread%';

mysql show status like 'Connections';

(8)鎖定狀態(tài)

mysql show status like '%lock%';

(9)復制延時量

mysql show slave status

(10) Tmp Table 狀況(臨時表狀況)

mysql show status like 'Create_tmp%';

(11) Binlog Cache 使用狀況

mysql show status like 'Binlog_cache%';

(12) Innodb_log_waits 量

mysql show status like 'innodb_log_waits';

當然你也可以使用一下開源監(jiān)控軟件進行監(jiān)控

一,RRDTool

二,Nagios

三,MRTG

四,Cacti

如何查看mysql數(shù)據(jù)庫的性能

如何提高MySQL Limit查詢的性能?

在MySQL數(shù)據(jù)庫操作中,我們在做一些查詢的時候總希望能避免數(shù)據(jù)庫引擎做全表掃描,因為全表掃描時間長,而且其中大部分掃描對客戶端而言是沒有意義的。其實我們可以使用Limit關(guān)鍵字來避免全表掃描的情況,從而提高效率。

有個幾千萬條記錄的表 on MySQL 5.0.x,現(xiàn)在要讀出其中幾十萬萬條左右的記錄。常用方法,依次循環(huán):

select * from mytable where index_col = xxx limit offset, limit;

經(jīng)驗:如果沒有blob/text字段,單行記錄比較小,可以把 limit 設(shè)大點,會加快速度。

問題:頭幾萬條讀取很快,但是速度呈線性下降,同時 mysql server cpu 99% ,速度不可接受。

調(diào)用 explain select * from mytable where index_col = xxx limit offset, limit;

顯示 type = ALL

在 MySQL optimization 的文檔寫到"All"的解釋

A full table scan is done for each combination of rows from the previous tables. This is normally not good if the table is the first table not marked const, and usually very bad in all other cases. Normally, you can avoid ALL by adding indexes that allow row retrieval from the table based on constant values or column values from earlier tables.

看樣子對于 all, mysql 就使用比較笨的方法,那就改用 range 方式? 因為 id 是遞增的,也很好修改 sql 。

select * from mytable where id offset and id offset + limit and index_col = xxx

explain 顯示 type = range,結(jié)果速度非常理想,返回結(jié)果快了幾十倍。

Limit語法:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT子句可以被用于強制 SELECT 語句返回指定的記錄數(shù)。LIMIT接受一個或兩個數(shù)字參數(shù)。參數(shù)必須是一個整數(shù)常量。

如果給定兩個參數(shù),第一個參數(shù)指定第一個返回記錄行的偏移量,第二個參數(shù)指定返回記錄行的最大數(shù)目。初始記錄行的偏移量是 0(而不是 1)。

為了與 PostgreSQL 兼容,MySQL 也支持句法:LIMIT # OFFSET #。

mysql SELECT * FROM table LIMIT 5,10; //檢索記錄行6-15

//為了檢索從某一個偏移量到記錄集的結(jié)束所有的記錄行,可以指定第二個參數(shù)為-1

mysql SELECT * FROM table LIMIT 95,-1; //檢索記錄行96-last

//如果只給定一個參數(shù),它表示返回最大的記錄行數(shù)目,換句話說,LIMIT n 等價于 LIMIT 0,n

mysql SELECT * FROM table LIMIT 5; //檢索前5個記錄行

MySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時候,limit的性能就急劇下降。同樣是取10條數(shù)據(jù),下面兩句就不是一個數(shù)量級別的。

select * from table limit 10000,10

select * from table limit 0,10

文中不是直接使用limit,而是首先獲取到offset的id然后直接使用limit size來獲取數(shù)據(jù)。根據(jù)他的數(shù)據(jù),明顯要好于直接使用limit。

這里我具體使用數(shù)據(jù)分兩種情況進行測試。

1、offset比較小的時候:

select * from table limit 10,10

//多次運行,時間保持在0.0004-0.0005之間

Select * From table Where vid >=(Select vid From table Order By vid limit 10,1) limit 10

//多次運行,時間保持在0.0005-0.0006之間,主要是0.0006

結(jié)論:偏移offset較小的時候,直接使用limit較優(yōu)。這個顯然是子查詢的原因。

2、offset大的時候:

select * from table limit 10000,10

//多次運行,時間保持在0.0187左右

Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10

//多次運行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,后者越優(yōu)。

Mysql服務(wù)器負載很高,性能問題排查思路是怎樣的

對于包括 mysql 在內(nèi)的大多數(shù)數(shù)據(jù)庫系統(tǒng)而言

性能問題的排查主要有以下方向:

1. 需求的不合理造成的性能問題

比方說,不需要實時更新的內(nèi)容,被要求做成實時更新

2. 架構(gòu)的不合理造成的性能問題

比方說,不適合數(shù)據(jù)庫保存的數(shù)據(jù),被存放在數(shù)據(jù)庫中

或者,頻繁訪問但是很少變更的數(shù)據(jù),沒有做緩存

3. 查詢語句的不合理造成的性能問題

比方說,重復執(zhí)行相同的 SQL 會造成資源浪費

或者,大量復雜的 join 語句會導致查詢效率低下

4. 數(shù)據(jù)庫設(shè)計的不合理造成的性能問題

比方說,盲目追求三范式、四范式,有時候并沒有必要

5. 硬件配置的不合理造成的性能問題

比方說,數(shù)據(jù)庫服務(wù)器的 io 性能、CPU 、網(wǎng)絡(luò)狀況,都會影響性能

以上這些都是性能問題定位和調(diào)優(yōu)的方向

如何測試mysql的性能和穩(wěn)定性

 有一些有用的工具可以測試MySQL 和基于MySQL 的系統(tǒng)的性能。這里將演示如何利用這些工具進行測試。

mysqlslap

mysqlslap可以模擬服務(wù)器的負載,并輸出計時信息。它包含在MySQL 5.1 的發(fā)行包中,應(yīng)該在MySQL 4.1或者更新的版本中都可以使用。測試時可以執(zhí)行并發(fā)連接數(shù),并指定SQL 語句(可以在命令行上執(zhí)行,也可以把SQL 語句寫入到參數(shù)文件中)。如果沒有指定SQL 語句,mysqlslap 會自動生成查詢schema 的SELECT 語句。

MySQL Benchmark Suite (sql-bench)

在MySQL 的發(fā)行包中也提供了一款自己的基準測試套件,可以用于在不同數(shù)據(jù)庫服務(wù)器上進行比較測試。它是單線程的,主要用于測試服務(wù)器執(zhí)行查詢的速度。結(jié)果會顯示哪種類型的操作在服務(wù)器上執(zhí)行得更快。

這個測試套件的主要好處是包含了大量預定義的測試,容易使用,所以可以很輕松地用于比較不同存儲引擎或者不同配置的性能測試。其也可以用于高層次測試,比較兩個服務(wù)器的總體性能。當然也可以只執(zhí)行預定義測試的子集(例如只測試UPDATE 的性能)。這些測試大部分是CPU 密集型的,但也有些短時間的測試需要大量的磁盤I/O 操作。

這個套件的最大缺點主要有:它是單用戶模式的,測試的數(shù)據(jù)集很小且用戶無法使用指定的數(shù)據(jù),并且同一個測試多次運行的結(jié)果可能會相差很大。因為是單線程且串行執(zhí)行的,所以無法測試多CPU 的能力,只能用于比較單CPU 服務(wù)器的性能差別。使用這個套件測試數(shù)據(jù)庫服務(wù)器還需要Perl 和BDB 的支持,相關(guān)文檔請參考.

Super Smack

Super Smack是一款用于MySQL 和PostgreSQL的基準測試工具,可以提供壓力測試和負載生成。這是一個復雜而強大的工具,可以模擬多用戶訪問,可以加載測試數(shù)據(jù)到數(shù)據(jù)庫,并支持使用隨機數(shù)據(jù)填充測試表。測試定義在"smack"文件中,smack 文件使用一種簡單的語法定義測試的客戶端、表、查詢等測試要素。

Database Test Suite

Database Test Suite 是由開源軟件開發(fā)實驗室(OSDL,Open Source DevelopmentLabs)設(shè)計的,發(fā)布在SourceForge 網(wǎng)站上,這是一款類似某些工業(yè)標準測試的測試工具集,例如由事務(wù)處理性能委員會(TPC,Transaction Processing Performance Council)制定的各種標準。特別值得一提的是,其中的dbt2 就是一款免費的TPC-C OLTP 測試工具(未認證)。之前本書作者經(jīng)常使用該工具,不過現(xiàn)在已經(jīng)使用自己研發(fā)的專用于MySQL 的測試工具替代了。

Percona's TPCC-MySQL Tool

我們開發(fā)了一個類似TPC-C 的基準測試工具集,其中有部分是專門為MySQL 測試開發(fā)的。在評估大壓力下MySQL 的一些行為時,我們經(jīng)常會利用這個工具進行測試(簡單的測試,一般會采用sysbench 替代),在源碼庫中有一個簡單的文檔說明。

sysbench

sysbench是一款多線程系統(tǒng)壓測工具。它可以根據(jù)影響數(shù)據(jù)庫服務(wù)器性能的各種因素來評估系統(tǒng)的性能。例如,可以用來測試文件I/O、操作系統(tǒng)調(diào)度器、內(nèi)存分配和傳輸速度、POSIX 線程,以及數(shù)據(jù)庫服務(wù)器等。sysbench 支持Lua 腳本語言,Lua 對于各種測試場景的設(shè)置可以非常靈活。sysbench 是我們非常喜歡的一種全能測試工具,支持MySQL、操作系統(tǒng)和硬件的硬件測試。(節(jié)選自《高性能MySQL》)

如何查看mysql 腳本的性能

可以使用EXPLAIN語句查看SQL腳本性能:

EXPLAIN SELECT 語句;

例如學生表,其中電話字段建立了索引

學生表有6條記錄

查詢SQL語句的運行效率

explain select * from students where phone like '%34%'\G

下圖rows為6,顯示該查詢掃描了6行記錄,沒有利用到索引

explain select * from students where phone like '45%'\G

下圖rows為1,顯示該查詢掃描了1行記錄,利用到了索引

兩圖比較like匹配查詢

第一種寫法 '%34%'?掃描了6行,索引未被利用;第二種寫法?'45%' 掃描1行,索引發(fā)揮作用,效率更高。

新聞名稱:mysql的性能怎么檢查 mysql 查看sql性能
文章地址:http://jinyejixie.com/article42/dossdhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站建設(shè)、標簽優(yōu)化、網(wǎng)站維護、ChatGPT、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化