是指資料庫表的每一列都是不可分割的基本資料項,同一列不能有多個值。
第一正規化(1nf)是對關係模式的基本要求,不滿足第一正規化的資料庫就不是關聯式資料庫
要求資料庫表中的每個例項或行必須可以被唯一的區分。(設定主鍵來區分)
要求乙個資料庫表中不包括已在其它表中已包含的非主關鍵資訊。兩張表不要重複的字段,通常都是設定外來鍵
在乙個資料庫中,一般不會涉及屬性過多的表
在乙個資料庫中,一般不會超過500/1000萬資料的表(拆表)
有大資料的列單獨拆成小表(比如富文字編輯器)
客戶端傳送一條查詢給伺服器
伺服器通過許可權檢查之後,先回檢查查詢快取,如果命中了快取,則立即返回存貯在快取中的結果。否則進入下一階段
伺服器端進行sql解析、預處理,再由優化器根據該sql所涉及到的資料表的統計資訊進行計算,生成對應的執行計畫
mysql根據優化器生成的執行計畫,呼叫儲存引擎的api來執行查詢
將結果返回給客戶端
寫的任何sql到底是怎麼樣真正執行的,按照什麼條件查詢,最後執行的順序,可能都會有多個執行方案
查詢優化器根據對資料表的統計資訊(比如索引,有多少條資料),在真正執行一條sql之前,會根據自己內部的資料進行綜合的查詢
根據mysql自身的統計資訊,從多種執行方案當中,選擇乙個它認為是最優的執行方案,來去執行
做優化,就是想讓查詢優化器按照我們的想法,幫我們選擇最優的執行方案
讓優化器選擇符合程式設計師計畫的執行語句,來減少查詢過程中產生的io
cpu飽和
磁碟i/o讀取資料大小
伺服器硬體比較低
可以使用explan來判斷
使用explain關鍵字,可以模擬優化器執行的sql語句。從而知道mysql是如何處理sql語句的。通過explain可以分析查詢語句或表結構的效能瓶頸
檢視表的讀取順序
資料讀取操作的操作型別
檢視哪些索引可以使用
檢視哪些索引被實際使用
檢視表之間的引用
檢視每張表有多少行被優化器執行
MySQL general log優化效能
原文url 常常遇到這樣的問題 資料庫訪問量很大,想要從sql方面進行優化。往往開發同學會問 能看到哪些sql執行比較頻繁嗎?回道 不能哦,只能看到當前正在執行的sql和慢日誌裡記錄的sql。因為為了效能考慮,一般general log不會開啟。slow log可以定位一些有效能問題的sql,而ge...
SqlServer效能優化 效能調控(十)
如何做資源的調控 1.建立資源池。2.建立工作負荷組 create resource pool imporpool with min cpu percent 30,max cpu percent 100,min memory percent 40,max memory percent 95 不太重要...
mysql容器效能優化 MySQL高階 效能優化
1.應用優化 1.1 使用資料庫連線池 使用資料庫連線池,避免資料庫連線頻繁的建立和銷毀,進而減少資源的消耗,提高資料庫的訪問效能。1.2 減少對mysql的訪問 1.2.1 避免資料重複檢索 能一次檢索獲取到結果,就不要進行倆次檢索,減少對資料庫的無用重請求。1.2.2 增加cache層 增加快取...