MySQL深入理解

2022-07-02 18:42:09 字數 1691 閱讀 5560

【儲存引擎】

innodb表引擎

myisam表引擎

其他的表引擎

【索引】

索引對效能的影響:

索引的使用場景:

索引的型別:

對比說明:

mysql索引的建立原則:

mysql索引的注意事項:

【查詢優化】

查詢分析sql查詢慢的原因

優化查詢過程中的資料訪問

避免使用如下sql語句:

是否在掃瞄額外的記錄?

優化長難的查詢語句

切分查詢:

分解關聯查詢:

優化特定型別的查詢語句

優化方案:

優化關聯查詢:

優化子查詢:

優化group by 和distinct:

優化limit分頁:

優化union查詢:

【mysql高可擴充套件和高可用】

分割槽表的原理

適用場景:

限制:分庫分表的原理

適用場景:

分表方式:

分庫分表缺點:

[水平分表]

定義:表很大,分割後可以降低在查詢時需要讀的資料和索引的頁數,同時也降低了索引的層數,提高查詢速度

使用場景:表中的資料本身就有獨立性,例如表中分別記錄各個地區的資料或者不同時期的資料,特別是有些資料常用,有些不常用,比如切分歷史資料和活躍資料

需要把資料存放到多個介質上

缺點:給應用增加複雜度,通常查詢時需要多個表名,查詢所有資料都需要 union 操作

在許多資料庫應用中,這種複雜性會超過帶來的優點,查詢時會增加讀乙個索引層的磁碟次數

[垂直分表]

定義:把主鍵和一些列放在一張表,然後把主鍵和另外的列放在另一張表中

使用場景:表中某些列常用,而另外一些列不常用

可以使資料行變小,乙個資料頁能儲存更多資料,查詢時減少 i/o 次數

缺點:管理冗餘列,查詢所有資料都需要join操作

【mysql的複製原理及負載均衡】

mysql 主從複製工作原理:

解決了哪些問題?

思考題:

設定**的使用者數量在千萬級,但是活躍使用者的數量只有1%,如何通過優化資料庫提高活躍使用者的訪問速度?

答:我們可以根據使用者的活躍程度,把活躍的使用者提取出來放到另外一張表裡面,每次活躍的使用者登陸的時候就直接到活躍使用者表中進行查詢,這樣就提高了資料庫的查詢速度。

【mysql安全性】

sql查詢的安全方案

1、使用預處理語句防sql注入

2、寫入資料庫的資料要進行特殊字元的轉義

3、查詢錯誤資訊不要返回給使用者,將錯誤記錄到日誌

mysql的其他安全設定

1、定期做資料備份

2、不給查詢使用者root許可權,合理分配許可權

3、關閉遠端訪問資料庫許可權

4、修改root口令,不用預設口令,使用較複雜的口令

5、刪除多餘的使用者

6、改變root使用者的名稱

7、限制一般使用者瀏覽其他庫

8、限制使用者對資料檔案的訪問許可權

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

mysql深入理解二

過濾資料 本章講授如何使用select語句的where 子句指定的搜尋條件。資料庫表一般包含 大量的資料,很少需要檢索表中所有的行。通常只會根據特定操作或報告的需要 提取資料的子集。只檢索所需資料需要的指定搜尋條件 search criteria 搜尋條 件也稱為過濾條件 filter condit...

深入理解mysql索引

三 b tree 索引是幫助mysql高效獲取資料的排好序的資料結構。mysql中索引預設的資料結構為b tree。新建兩張表test innodb 儲存引擎為innodb test myisam 儲存引擎為myisam 當進入到mysql安裝目錄下的data資料夾可以看到test innodb.f...