一、寫在前
知識學了就忘!不用就忘!我太健忘!特此記錄!用于復習打卡!Mysql干就完事了!
二、來辣!
-
MyISAM表把自增主鍵最大id記錄到檔案,重啟也不會丟,InnoDB記錄到記憶體,重啟資料庫和OPTIMIZE操作會丟,
-
Heap表存在于記憶體,用于臨時高速存盤,BLOB和TEXT不允許,只能=<>>=<=;不支持自增,索引不可為NULL,
-
InnoDB支持的4中隔離級別,及逐級之間的區別,
-
BLOB和TEXT區別:對BLOB值進行排序和比較大小時區分大小寫,對TEXT值不區分,
-
每個MyISAM表以三個檔案存盤在磁盤:表定義:“.frm”;資料檔案:“.MYD”(MYDATA);索引檔案:“.MYI”(MYINDEX),
-
MySQL表格型別:MyISAM、Heap、Merge、InnoDB、ISAM,5.5之前默認引擎是MyISAM,5.5開始是InnoDB,InnoDB是.frm;.ibd(索引和資料)
-
MySQL優化DISTINCT:DISTNCT在所有列上轉換為GROUP BY,并與ORDER BY子句結合使用,
-
單個索引最多使用16列創建,
-
允許6種觸發器,增刪改的前、后,before update
-
強制關機或斷電可能會導致資料表損壞,
-
MyISAM支持表鎖;InnoDB支持表鎖、行鎖,默認行鎖,還有一個頁面鎖,粒度在中間,
-
MySQL查詢快取弊端:頻繁更新的表,一更新就失效,不安逸,8.0版本被刪了,
-
MyISAM和InnoDB區別:InnoDB支持行鎖、事務、多版本并發控制(MVVC)、外鍵、聚集索引;MyISAM支持全文索引,InnoDB部分版本不支持(可使用Sphinx插件),
-
通過整庫備份+binlog可以恢復半個月前日志,前提有備份和日志,
-
優化:盡量使用主鍵查詢:聚簇索引上存盤了全部資料,相比普通索引,減少了回表的消耗;MySQL5.6之后引入了索引下推優化,適當使用聯合索引,減少回表消耗;若頻繁查詢某一列,考慮利用覆寫索引避免回表;最左原則:聯合索引將高頻欄位放最左邊,
-
資料庫三范式:1屬性不可再分(每列只有一個值);2每行可以被唯一區分(加主鍵);3不含其它表已包含了的非主鍵資訊,
-
limit offset由于掃描過多資料越往后查詢越慢,存在有序id時:可配合當前頁最后一條id進行查詢,where id > #{id} limit #{limit},
-
資料量越來越大導致查詢慢:分庫分表,根據時間拆分,id最好包含時間(如雪花演算法),這樣既能根據id直接獲取,也能按照時間進行查詢,
-
char和varchar區別:char長度固定為宣告長度,1~255,存盤時用空格填充,檢索時洗掉,
-
候選鍵和主鍵:超鍵(學號+姓名)(學號),候選鍵(學號),主鍵(學號),外鍵(學號在另一張表做外鍵),不含多余屬性的超鍵=候選鍵,我從候選鍵中選一個作為主鍵,
-
資料增量大調優:允許資料冗余,避免join查詢;欄位型別和存盤引擎合理,適當添加索引;主從讀寫分離;合理分表,減少單表資料量提高查詢速度;添加快取;不用select *;
-
鎖的優化:讀寫分離;分段加鎖;減少鎖持有時間;多執行緒盡量按順序獲取鎖;鎖不能過度細化,避免頻繁加鎖和釋放,
-
索引底層和優化:B+樹,在所有葉子節點增加了指向下一個葉子節點的指標,所以InnoDB建議大部分表使用自增主鍵作為主索引,
-
索引失效:以%開頭的like陳述句;OR陳述句前后沒有同時使用索引;資料型別隱式轉換(varchar不加單引號可能轉成int型)
-
優化MySQL:陳述句與索引;資料庫表結構;系統配置;硬體,
-
優化資料庫:選取合適的欄位屬性,減少欄位寬度,盡量設定成not null,省份、性別設定成ENUM;使用join代替子查詢;使用聯合(UNION)代替手動創建的臨時表;事務處理;鎖定表,優化事務處理;適用外鍵,優化鎖定表;建立索引;優化查詢陳述句,
-
索引是一種特殊檔案,InnoDB的索引是表空間的一部分,包含對資料表里所有記錄的參考指標,普通索引唯一任務是加快對資料的訪問速度,允許重復值;唯一索引保證資料的唯一性,可以null;主鍵是特殊的唯一索引,不能為null,用PRIMARY KEY創建;聯合索引,
-
防止SQL注入:用#不用$;過濾關鍵詞update、insert、delete、select、*;SQL陳述句盡量不省略雙引號和單引號;資料庫表名和欄位名命名技巧,防止被猜;開啟組態檔中的 magic_quotes_gpc 和 magic_quotes_runtime 設定;執行 sql 陳述句時使用 addslashes 進行 sql 陳述句轉換,
-
資料定義DDL: Create Table,Alter Table,Drop Table, Craete/Drop Index 等;資料操縱DML: Select ,insert,update,delete;資料控制DCL: grant,revoke ;資料查詢DQL: select
-
MVCC:并發版本控制:相當于為每個修改保存一個版本,版本與事務時間戳關聯,讀操作只讀
該事務開始前的資料庫快照,它是通過資料庫記錄中的隱式欄位Undo日志、Read Riew操作實作的,好處:并發讀寫資料庫的時候,提高速度;實作讀一致性,解決臟讀、幻讀、不可重復度問題;采用樂觀鎖或悲觀鎖操作解決寫和寫的從沖突,
三、寫在后
只是簡要知識點概括,看到就能回憶起相關內容為最妙~~直接評論打卡,開整!!!
作者: letscrazy
出處: https://www.cnblogs.com/letscrazy/
關于作者:letscrazy
本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出, 原文鏈接 如有問題, 可郵件([email protected])咨詢.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/539008.html
標籤:其他
