mysql優化之sql執行流程及表結構(schema)對效能的影響
part 1 sql執行流程(如下圖所示)
1、客戶端傳送一條查詢到伺服器。
2、伺服器通過許可權檢查後,先檢查查詢快取,命中則直接返回結果。否則進入3。
3、伺服器進行sql解析,預處理,再由優化器根據該sql涉及到的資料表的資訊計算,生成執行計劃。
4.、MySQL根據優化器生成的執行計劃,呼叫儲存引擎的API來執行查詢;
5.、將結果返回給客戶端。
總結:SQL執行的最大瓶頸在於磁碟的IO,即資料的讀取;不同SQL的寫法,會造成不同的執行計劃的執行,而不同的執行計劃在IO的上面臨完全不一樣的數量級,從而造成效能的差距;優化SQL,其實就是讓查詢優化器根據你所希望的執行過程來選擇匹配的執行計劃,減少查詢中產生的IO
part 2 表結構(schema)對效能的影響
1、資料庫三正規化,適當設定冗餘資料
1NF:是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,不滿足第一正規化的資料庫不是關係型資料庫。
2NF:資料庫表中的每個例項或行必須可以被惟一地區分。
3NF:資料庫表中只包含其它表中的主關鍵字資訊。 (不允許有冗餘資料)
2、大表拆小表,有大資料的列單獨拆成小表
3、把常用屬性分離成小表 ,這樣可以減少查詢常用屬性需要查詢的列,便於常用屬性的集中快取
相關推薦
mysql優化之sql執行流程及表結構(schema)對效能的影響
part 1 sql執行流程(如下圖所示) 1、客戶端傳送一條查詢到伺服器。 2、伺服器通過許可權檢查後,先檢查查詢快取,命中則直接返回結果。否則進入3。 3、伺服器進行sql解析,預處理,再由優化器根據該sql涉及到的資料表的資訊計算,生成執行計劃。 4.、MySQL根據優化器生成的執行計劃,呼叫儲
Spark Streaming執行流程及原始碼解析(一)
本系列主要描述Spark Streaming的執行流程,然後對每個流程的原始碼分別進行解析 之前總聽同事說Spark原始碼有多麼棒,咱也不知道,就是瘋狂點頭。今天也來擼一下Spark原始碼。 對Spark的使用也就是Spark Streaming使用的多一點,所以就拿Spark Streaming開涮。
mysql優化之sql優化原則
以下內容來自小馬哥視訊學習筆記。 ---------------------------------------------------------------------------------------------------------------------------------------
Burp Suite之截斷代理功能及相關設定(一)
Burpsuite 1.burpsuite 簡介2.設定代理3.Target4.爬網模組5.掃描模組6.擴充套件模組7.intrude8.Repeater9.Sequencer10.Decoder11.Compare12.burpsuite 專案主配置資訊 1.burpsu
MySQL效能管理及架構設計(一):什麼影響了資料庫查詢速度、什麼影響了MySQL效能
一、什麼影響了資料庫查詢速度 1.1 影響資料庫查詢速度的四個因素 1.2 風險分析 QPS: Queries Per Second意思是“每秒查詢率”,是一臺伺服器每秒能夠相應的查詢次數,是對一個特定的查詢伺服
JavaScript執行環境及作用域(一)——執行環境棧和作用域鏈機制
執行環境是JavaScript中最為重要的一個概念,每個執行環境都有一個與之關聯的變數物件,執行環境中所有的變數和函式都儲存在這個物件中。我們編寫的程式碼是無法訪問這個變數物件的,只有解析器在處理資料時會在後臺使用它,但有個例外,因為在Web瀏覽器中,全域性執行環境關聯的變數物件是window物件,windo
JavaScript執行環境及作用域(二)——延長作用域鏈
雖然執行環境的型別總共只有兩種——全域性和區域性(函式),但還是有辦法來延長作用域鏈的,這麼說是因為有些語句可以在作用域鏈的前端臨時增加一個變數物件,該變數物件會在程式碼執行後被移除。在兩種情況下會發生這種現象。具體來說,就是當執行流進入下列任何語句時,作用域鏈就會得到加長: try-catch語句的cat
docker容器技術之系統資源限制及驗正(八)
前一篇文章:docker容器技術之私有registry(七) 測試: 限制記憶體: 限制cpu:
js執行機制及非同步程式設計(一)
相信大家在面試的過程中經常遇到檢視執行順序的問題,如setTimeout,promise,async await等等,各種組合,是不是感覺頭都要暈掉了,其實這些問題最終還是考察大家對js的執行機制是否掌握牢固,對promise,async的原理是否掌握,萬變不離其宗,這次就來徹底搞懂它。 1 js引擎
資料結構之基本查詢與樹表查詢(上)
只要你開啟電腦,就會涉及到查詢技術。如炒股軟體中查股票資訊、硬碟檔案中找照片、在光碟中搜DVD,甚至玩遊戲時在記憶體中查詢攻擊力、魅力值等資料修改用來作弊等,都要涉及到查詢。當然,在網際網路上查詢資訊就更加是家常便飯。查詢是計算機應用中最常用的操作之一,也是許多程
移動網際網路APP測試流程及測試點(轉載) (二)
2.1安全測試 2.1.1軟體許可權 1)扣費風險:包括髮送簡訊、撥打電話、連線網路等 2)隱私洩露風險:包括訪問手機資訊、訪問聯絡人資訊等 3)對App的輸入有效性校驗、認證、授權、敏感資料儲存、資料加密等方面進行檢測 4)限制/允許使用手
詳解MYSQL資料庫密碼的加密方式及破解方法(2)
2.將MySQL使用者密碼字串加入到Cain破解列表 本文使用Cain & Abel 來破解MYSQL資料庫使用者密碼,Cain & Abel是一個可以破解屏保、PWL密碼、共享密碼、快取口令、遠端共享口令、SMB口令、支援VNC口令解碼、C
Spring基於註解形式的 AOP的原理流程及原始碼解析(一)
在Spring的配置類上添加註解@EnableAspectJAutoProxy: @Configuration @EnableAspectJAutoProxy(proxyTargetClass = true) public class MvcContextCo
【Mybatis】MyBatis之Sql配置文件的使用(四)
err null 類屬性 @override tty 自增 temp param column 上一章【Mybatis】MyBatis對表執行CRUD操作(三),已經講了基本操作,本章介紹Sql配置文件中常用功能 1、插入返回主鍵 2、參數值的獲取方式 3、
java入門---環境設定以及執行例項之如何執行指定class檔案目錄(classpath)
如果我們 Java 編譯後的class檔案不在當前目錄,我們可以使用 -classpath 來指定class檔案目錄:C:> java -classpath C:\java\DemoCla
Qt使用教程之使用Qt Quick UI表單(六)
建立選單 嚮導新增一個選單欄到main.qml檔案中,這其中包含了一個具有Open和Exit選單的File選單。儲存選單和Exit選單項,然後新增具有標準選單項的Edit和Help選單。 該向導將建立下面的程式碼: 1
網站開發之HTML基礎知識及超連結(二)
前面的文章我講述了HTML的基礎知識。包括:1.JSP前段設計及HTML基礎介紹;2.HTML常用標記符:HEAD、HTML屬性、BODY設定背景、註釋、FONT、B\I\U;3.HTML設定段落格式:分段P、換行BR、標題樣式Hn、HR、align對齊、列
Spring基於註解形式的 AOP的原理流程及原始碼解析(三)
此篇部落格主要講解Spring如何驗證將要例項化的Bean是否應該被代理,生成代理物件的時機問題。 在第二篇部落格中,Spring對容器內所有的標識了@Aspect註解的的類的切面方法(標識了@Around, @Before, @After, @AfterRe
SQL SERVER大話存儲結構(3)_數據行的行結構
bits 基礎 就會 mar ant rain 版權 bpa 一個數 一行數據是如何來存儲的呢? 變長列與定長列,NULL與NOT NULL,實際是如何整理存放到 8k的數據頁上呢? 對表格進行增減列,修改長度,添加默認值等DDL S
【Kaggle-MNIST之路】自定義程式結構(七)
簡述 這一篇跟這個系列的其他文章不一樣,這個是重新安排下程式結構 結構如下: 其中model這個模型專門放模型就好了 model/init.py中不用寫就好了。 model/CNN.py中的內容 模型是基於之前的【Kaggle-MNIS