mysql數據庫一些知識

總結一下數據庫的知識:
1.一個關係型數據庫包含:
將數據庫分爲兩大部分:
a.存儲部分:將數據持久化的存儲設備中;
b.程序實例模塊,對存儲進行邏輯上的管理,包含:存儲管理,緩存機制,SQL解析,日誌管理,權限劃分,容災機制,索引管理,鎖管理;

2.數據庫優化的八種方法:
1.選用最適用的字段屬性,數據庫中的表越小,在它上面執行的查詢也就會越快;
2.使用連接(JOIN)來代替子查詢;
3.使用聯合(UNION)來代替手動創建的臨時表;
4.事務:保證數據庫的一致性和完整性;
5.鎖定表:維護數據的一致性;缺點:不能保證數據的關聯性;
6.使用外鍵:保證數據庫的一致性,保證了數據的關聯性;
7.使用索引:避免全表掃描去查找數據,提升查找的效率;
8.優化查詢語句;

能成爲索引:
主鍵,唯一鍵

3.優化索引B±Tree結構定義:

B+樹:
根節點至少包括兩個孩子
樹中每個節點最多含有m個孩子(m>=2)
除根節點和葉節點外,其他每個節點至少有ceil(m/2)個孩子
所有葉子節點都位於同一層
非葉子節點的子樹指針與關鍵字個數相同;
非葉子節點的子樹指針P[i],指向關鍵字值[K[i],K[i+1])的子樹;
非葉子節點僅用來索引,數據都保存在葉子節點中;
所有葉子節點均有一個鏈指針指向下一個葉子節點

4.MyISAM存儲引擎適合的場景:
頻繁執行全表count語句;
對數據進行增刪改的頻率不高,查詢非常頻繁;
沒有事務;
MyISAM默認用的是表級鎖,不支持行級鎖;
(表級鎖:鎖住整個表;特點:開銷小,加載快,不會出現死鎖)
(行級鎖:鎖住表的某一行;特點:開銷大,加載慢,會出現死鎖)

5.InnoDB適存儲引擎合的場景:
數據增刪改查都很相當頻繁;
可靠性要求高,要求支持事務;
InnoDB默認用的是行級鎖,也支持表級鎖;

6.Druid 連接池
1.替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
2、可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。
3、SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
4、擴展JDBC,Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。

7.優化一個有100萬條記錄的數據庫表
1.如果有唯一字段的,創建主鍵和索引,提高查詢主鍵字段效率;
2.如果這些數據是變更的,可以通過時間來創建分區;
3.如果部分老數據都是不需要的數據(不常用),可以定期將老數據備份到其它位置;
4.如果是查詢的話,可以通過分頁查詢的形式進行,不要一次性讀取過多數據;
5.引用第三方數據庫redis;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章