年終大學習之MySQL資料庫優化學習筆記(三)

2021-06-28 09:55:12 字數 1294 閱讀 5035

好吧,我懶,我真懶,有時候真的在家裡明知道有很多事情要做卻什麼都不想做,這樣下去真的不太好,和別人差距還是很大的,唉,繼續努力吧。

這次學到的是關於sql語句本身的優化:

我們需要解決的問題是:如何從乙個大專案中,迅速的定位執行速度慢的語句(定位慢查詢)

要解決這些問題就分為以下幾個步驟

(1)首先我們需要了解mysql資料庫的一些執行狀態,例如:當前資料庫執行的時間,一共執行了多少次select/delete/insert.../ ,  當前的連線數等等。。。

查詢這些的基本語句:

show status

執行後,你可以看到大約33種狀態,但是如果不是dba的話,我們就沒有必要去認真的背下來,只需要了解其中幾個常用的就行了。

show status like 'uptime';

show status like 'com_select';

show status like 'com_delete';

show status like 'com_update'

檢視連線數:

show status like 『connections』;

注:windows下看具體的連線數,命令列下:

netstat -an

netstat -anb

注意:這裡show status的完整形式是:show [session | global ] status like ..      如果你不寫[session | global ] 預設是session會話,指取出當前視窗的執行,如果你想看所有,從mysql啟動到現在,則應該global; 即

show global status like 'com_insert';

(2)了解了如何看狀態後,就可以來查詢慢查詢的次數;

show status like 'slow_queries';
在預設的情況下,mysql中慢查詢是10秒以上的查詢,但是我們在測試中就不能真的是10秒,一般是1秒左右來測試是否有慢查詢的存在。

//顯示慢查詢次數

show variables like '%long_query_time%';

//修改慢查詢時間

set long_query_time=1 ;

了解了基礎知識,下次我們就開始構建大表來定位慢查詢。

年終大學習之MySQL資料庫優化學習筆記(二)

學習有時候真的是很痛苦的事情,尤其是在假期學習的時候,但是還是得咬牙堅持,既然選擇了拼搏,就要有別人都在玩而你還坐在電腦面前學習的苦逼感覺,不管你的努力會不會有你想要的結果,其中的過程也是一筆很珍貴的財富。好了,說主題,今天學習的是表的設計。首先,表的設計需要滿足三正規化 nf 正規化,就是表設計時...

年終大學習之MySQL資料庫優化學習筆記(五)

這一節的主要內容是記錄慢查詢,把這個知識點記錄完就可以學習下一節了,寒假學習之路也算是跌跌撞撞步上了正規了吧。在上一節,我們建立了乙個大表,也把慢查詢的預設時間改為了一秒,這樣我們就可以快速的捕捉到哪些語句造成了慢查詢了。然而,我們直接查詢只是查到有多少次慢查詢,還是沒有達到我們想要具體的知道產生慢...

mysql資料庫的建議 MySQL資料庫優化小建議

背景 那啥,你過來一下!怎麼了?我 都單元測試了的,沒出問題啊!我一臉懵逼跑到運維大佬旁邊。你看看!你看看!多少條報警,趕快優化一下!運維大佬簡訊列表裡面好多mysql cpu 100 報警簡訊。再看看專案名稱不就是我前幾天剛發布的專案嗎!我心底一沉,趕快賠上笑臉。這個一定優化,馬上優化!那個,能不...