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

2021-06-28 08:50:59 字數 1108 閱讀 2046

學習有時候真的是很痛苦的事情,尤其是在假期學習的時候,但是還是得咬牙堅持,既然選擇了拼搏,就要有別人都在玩而你還坐在電腦面前學習的苦逼感覺,不管你的努力會不會有你想要的結果,其中的過程也是一筆很珍貴的財富。

好了,說主題,今天學習的是表的設計。

首先,表的設計需要滿足三正規化(nf)。

正規化,就是表設計時需要遵守的規範,現在要求的正規化已經達到了六正規化,但是在普通的開發時,即在**的開發和一般的軟體開發只用遵守到第三正規化就滿足資料庫的需要了,太過於死記正規化的規範會過於僵硬的。

表的正規化,首先得滿足一正規化,才能滿足二正規化,進一步滿足三正規化,以此類推。

一正規化:即表的列具有原子性,不可再分解,即列的資訊,不能分解,只要資料庫是關係型資料庫(mysql/oracle/sqlserver)就滿足第一正規化;

這就引出來了乙個概念,資料庫的分類,好吧,在之前我都以為資料庫就是資料庫,原來資料庫也是要分類的額。。。

資料庫的分類:

關係型資料庫:mysql/oracle/sqlserver;

非關係型資料庫:特點:物件導向或者集合;

nosql資料庫:mongodb (特點是面向文件) 這個資料庫速度是很快的,有必要了解一下哦;

二正規化:表中的記錄是唯一的,就滿足第二正規化,通常我們設計乙個主鍵來實現的。

我們設計表的時候,就一定要設定主鍵,對主鍵的要求就是,與表的業務邏輯無關,而且滿足自增長,這樣進行讀寫操作的時候也會方便的很多。

三正規化:即表中的資料不要有冗餘,就是說,表的資訊,如果能推導出來,就不應該單獨的設計乙個欄位來存放。

二正規化,以我的理解就是避免了一列資料的冗餘,而三正規化,就是避免了莫一字段或多個列的某些字段過於重複而設計的,這就在設計的時候需要我們來構造外來鍵,來進行表於表的連線,可以避免資料的重複冗餘。

有時候,滿足三正規化反而會拖慢**的速度,為什麼呢?因為在網頁載入的時候,我們如果用第三正規化的話,就可能去查詢多個表,這樣不可避免的會增加**的載入時間長度,這樣反倒不能達到我們的目標。

這時候,我們就得使用反三正規化:沒有冗餘的資料庫未必就是最好的資料庫,又是為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是:在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時的考慮。降低正規化就是增加字段,允許冗餘。

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

好吧,我懶,我真懶,有時候真的在家裡明知道有很多事情要做卻什麼都不想做,這樣下去真的不太好,和別人差距還是很大的,唉,繼續努力吧。這次學到的是關於sql語句本身的優化 我們需要解決的問題是 如何從乙個大專案中,迅速的定位執行速度慢的語句 定位慢查詢 要解決這些問題就分為以下幾個步驟 1 首先我們需要...

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

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

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

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