查看mysql語(yǔ)句運(yùn)行時(shí)間的2種方法
網(wǎng)站運(yùn)行很慢的時(shí)候,我就特別起知道為什么這么慢,所以我查啊查,數(shù)據(jù)庫(kù)絕對(duì)是很重要的一部分,里面運(yùn)行的sql是絕對(duì)不能放過(guò)的。平時(shí)做項(xiàng)目的時(shí)候,我也會(huì)注意sql語(yǔ)句的書(shū)寫(xiě),寫(xiě)出一些高效的sql來(lái),所以我會(huì)經(jīng)常測(cè)試自己寫(xiě)的sql語(yǔ)句。我把我知道的二個(gè)方法,總結(jié)一下發(fā)出來(lái)。
一,show profiles 之類(lèi)的語(yǔ)句來(lái)查看
1,查一下profile是不是打開(kāi)了,默認(rèn)是不打開(kāi)的。
mysql> show profiles; Empty set (0.02 sec) mysql> show variables like "%pro%"; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | profiling | OFF | | profiling_history_size | 15 | | protocol_version | 10 | | slave_compressed_protocol | OFF | +---------------------------+-------+ 4 rows in set (0.00 sec)
我查看一下profiles里面沒(méi)有東西,所以公司的電腦里面profile是沒(méi)有打開(kāi)的,我查看了一下mysql變量,果然是OFF的。
2,開(kāi)啟profile,然后測(cè)試
開(kāi)啟profile
mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec)
測(cè)試如下:
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | aa | | bb | | comment | | string_test | | user | +----------------+ 5 rows in set (0.00 sec) mysql> select * from aa; +----+------+------------+------+ | id | name | nname | sex | +----+------+------------+------+ | 2 | tank | bbbb,4bbbb | NULL | | 3 | zhang| 3,c,u | NULL | +----+------+------------+------+ 2 rows in set (0.00 sec) mysql> update aa set name='d'; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> delete from bb; Query OK, 2 rows affected (0.00 sec) mysql> show profiles; +----------+------------+------------------------+ | Query_ID | Duration | Query | +----------+------------+------------------------+ | 1 | 0.00054775 | show tables | | 2 | 0.00022400 | select * from aa | | 3 | 0.00026275 | update aa set name='d' | | 4 | 0.00043000 | delete from bb | +----------+------------+------------------------+ 4 rows in set (0.00 sec) mysql> show profile; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.0000247 | | checking permissions | 0.0000077 | | Opening tables | 0.0000099 | | System lock | 0.000004 | | Table lock | 0.000005 | | init | 0.0003057 | | query end | 0.0000062 | | freeing items | 0.000057 | | closing tables | 0.000008 | | logging slow query | 0.0000015 | +----------------------+-----------+ 10 rows in set (0.00 sec) mysql> show profile for query 1; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.000028 | | checking permissions | 0.000007 | | Opening tables | 0.0000939 | | System lock | 0.0000017 | | Table lock | 0.0000055 | | init | 0.000009 | | optimizing | 0.0000027 | | statistics | 0.0000085 | | preparing | 0.0000065 | | executing | 0.000004 | | checking permissions | 0.000258 | | Sending data | 0.000049 | | end | 0.0000037 | | query end | 0.0000027 | | freeing items | 0.0000307 | | closing tables | 0.0000032 | | removing tmp table | 0.0000275 | | closing tables | 0.0000037 | | logging slow query | 0.000002 | +----------------------+-----------+ 19 rows in set (0.00 sec) mysql> show profile for query 3; +----------------------+-----------+ | Status | Duration | +----------------------+-----------+ | (initialization) | 0.0000475 | | checking permissions | 0.0000077 | | Opening tables | 0.000026 | | System lock | 0.0000042 | | Table lock | 0.0000045 | | init | 0.0000205 | | Updating | 0.0000787 | | end | 0.0000567 | | query end | 0.000004 | | freeing items | 0.0000067 | | closing tables | 0.000004 | | logging slow query | 0.000002 | +----------------------+-----------+ 12 rows in set (0.00 sec)
二,timestampdiff來(lái)查看測(cè)試時(shí)間
mysql> set @d=now(); Query OK, 0 rows affected (0.00 sec) mysql> select * from comment; +------+-----+------+------------+---------------------+ | c_id | mid | name | content | datetime | +------+-----+------+------------+---------------------+ | 1 | 1 | ?? | 2222222211 | 2010-05-12 00:00:00 | | 2 | 1 | ?? | ????(??) | 2010-05-13 00:00:00 | | 3 | 2 | tank | ?????? | 0000-00-00 00:00:00 | +------+-----+------+------------+---------------------+ 3 rows in set (0.00 sec) mysql> select timestampdiff(second,@d,now()); +--------------------------------+ | timestampdiff(second,@d,now()) | +--------------------------------+ | 0 | +--------------------------------+ 1 row in set (0.00 sec)
這種方法有一點(diǎn)要注意,就是三條sql語(yǔ)句要盡量連一起執(zhí)行,不然誤差太大,根本不準(zhǔn)
set @d=now(); select * from comment; select timestampdiff(second,@d,now());
如果是用命令行來(lái)執(zhí)行的話,有一點(diǎn)要注意,就是在select timestampdiff(second,@d,now());后面,一定要多copy一個(gè)空行,不然最后一個(gè)sql要你自己按回車(chē)執(zhí)行,這樣就不準(zhǔn)了。
其實(shí)我覺(jué)得吧,真正要我們關(guān)心的是那些查詢(xún)慢的sql,因?yàn)檎嬲绊懰俣鹊氖撬麄?,關(guān)于慢查詢(xún)的東西,有空寫(xiě)一下。
相關(guān)文章
mysql一鍵安裝教程 mysql5.1.45全自動(dòng)安裝(編譯安裝)
這篇文章主要介紹了mysql一鍵安裝教程,一鍵安裝MySQL5.1.45,全自動(dòng)安裝MySQL SHELL程序,實(shí)現(xiàn)編譯安裝,感興趣的2016-06-06mysql查詢(xún)語(yǔ)句中用戶(hù)變量的使用代碼解析
這篇文章主要介紹了mysql查詢(xún)語(yǔ)句中用戶(hù)變量的使用代碼解析,涉及部分代碼優(yōu)化的內(nèi)容,通過(guò)示例向大家解析用戶(hù)變量的相關(guān)問(wèn)題,需要的朋友可以參考下。2017-10-10安裝Mysql5.7.10 winx64出現(xiàn)的幾個(gè)問(wèn)題匯總
這篇文章主要介紹了安裝Mysql5.7.10 winx64出現(xiàn)的幾個(gè)問(wèn)題匯總及解決方案,非常不錯(cuò),需要的朋友可以參考下2016-08-08MySQL深度分頁(yè)(千萬(wàn)級(jí)數(shù)據(jù)量如何快速分頁(yè))
后端開(kāi)發(fā)中經(jīng)常需要分頁(yè)展示,個(gè)時(shí)候就需要用到MySQL的LIMIT關(guān)鍵字。LIMIT在數(shù)據(jù)量大的時(shí)候極可能造成的一個(gè)問(wèn)題就是深度分頁(yè)。本文就介紹一下解決方法,感興趣的可以了解一下2021-07-07InnoDb 體系架構(gòu)和特性詳解 (Innodb存儲(chǔ)引擎讀書(shū)筆記總結(jié))
下面小編就為大家?guī)?lái)一篇InnoDb 體系架構(gòu)和特性詳解 (Innodb存儲(chǔ)引擎讀書(shū)筆記總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03關(guān)于MySQL實(shí)現(xiàn)指定編碼遇到的坑
這篇文章主要介紹了一個(gè)關(guān)于MySQL指定編碼實(shí)現(xiàn)的小坑,文中大家需要注意如果有需要保存emoji符號(hào)的字段,記得一定要指定編碼為 utf8mb4,感興趣的朋友一起看看吧2021-10-10