問題是:如何從一個大項(xiàng)目中,迅速的定位執(zhí)行速度慢的查詢語句? 1.首先我們了解mysql數(shù)據(jù)庫的一些允許狀況 show session | global status like ‘uptime’ //運(yùn)行的時間 session當(dāng)前回話 global所有的 show status like ‘com_select’ //select命名使用的次數(shù),update,delete,等一樣 show status like connections //查詢多少個鏈接 ----------------------------------- netstats -anb // 查詢鏈接的詳細(xì)信息 ip,端口等 ;mysql服務(wù)端口為3306 客戶端隨機(jī)分配端口 ------------------------------------ 2.如何定位慢查詢 步驟: i:構(gòu)建一個大表(400萬以上數(shù)據(jù))->用存儲過程構(gòu)建,要去數(shù)據(jù)貼近真實(shí) 創(chuàng)建表 create table dept(/*部門表*/ deptno mediumint unsigned not null default 0,//編號 unsigned 無符號整數(shù) dname varchar(20) not null default "", //名稱 loc varchar(13) not null default "",//地點(diǎn) )engine=myisam default charset=utf8; --------------- create table emp(/*員工表*/ empno mediumint unsigned not null default 0,//編號 ename varchar(20) not null default "",//名字 job varchar(9) not null default "",//工作 mgr mediumint unsigned not null default 0,//上級編號 hiredate date not null,//入職時間 sal decimal(7,2) not null,//薪水 comm decimal(7,2) not null,//紅利 deptno mediumint unsigend not null default 0,//部門編號 )engine=myisam default charset=utf8; ------------------ create table salgrade(/*工資級別表*/ grade mediumint unsigend not null default 0, losal decimal(17,2) not null, hisal decimal(17,2) not null, )engine=myisam default charset=utf8; ----------------- 創(chuàng)建函數(shù).php ----------------------------- 舉例: <?php $con=mysql_connect("localhost","root","root"); if(!$con){ die(“失敗” } mysql_select_db('temp'); $sql="select rand_string(6) from dual";//dual 亞元表 > --------------------------- ii:show variables like ‘long_query’ //顯示慢查詢的時間是多少 set long_query_time=1 //修改慢查詢時間為1s ;然后打開數(shù)據(jù)庫運(yùn)行一天,再查看慢查詢 iii:show status like ‘slow_queries’ //顯示慢查詢次數(shù) iiii:把慢查詢的sql記錄到日志中,默認(rèn)不會打開。需要在啟動mysql時候,指定慢查詢記錄 |
|