(pytorch-深度學習系列)pytorch實現自定義網路層,並自設定前向傳播路徑-學習筆記
msyql資料庫儲存引擎
資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,使用不同的儲存引擎,還可以獲得特定的功能。
InnoDB儲存引擎
InnoDB是事務型資料庫的首選引擎,是目前MYSQL的預設事務型引擎,支援事務安全表(ACID),支援行鎖定和外來鍵。
如果需要頻繁的更新、刪除操作的資料庫,也可以選擇InnoDB,因為支援事務的提交(commit)和回滾(rollback)。
MyISAM儲存引擎
MyISAM擁有較高的插入、查詢速度,但不支援事物和外來鍵。
還有:MEMORY儲存引擎、MERGE儲存引擎
mysql索引
索引是一種高效獲取資料的儲存結構,索引是對資料庫表中一列或多列的值進行排序的一種結構。索引大大減少了儲存引擎需要掃描的資料量。
索引也不是越多越好,一方面它會佔用儲存空間,另一方面它會使得寫操作變得很慢。通常我們對查詢次數比較頻繁,值比較多的列才建索引。
索引優點:
第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。
第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。
第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。
索引缺點:
第一,建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。
第二,索引需要佔物理空間,除了資料表佔資料空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。
第三,當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。
MySQL B+樹索引和Hash索引的區別
B+樹是一個平衡的多叉樹。B+樹從根節點到葉子節點的搜尋效率基本相當,不會出現大幅波動。
雜湊索引採用一定的雜湊演算法,把鍵值換成新的雜湊值,檢索時不需要類似B+樹那樣從根節點逐級查詢,只需一次雜湊演算法即可立刻定位到相應的位置。
因為Hash索引比較的是經過Hash計算的值,所以只能進行等式比較,不能用於範圍查詢。
聯合索引、最左字首匹配
MySQL索引查詢會遵循最左字首匹配的原則,即最左優先,在檢索資料時從聯合索引的最左邊開始匹配。所以當我們建立一個聯合索引的時候,如(key1,key2,key3),相當於建立了(key1)、(key1,key2)和(key1,key2,key3)三個索引,這就是最左匹配原則
資料庫四大特性和隔離級別
資料庫四大特性
- 原子性
- 一致性
- 隔離性
- 永續性
資料庫的隔離級別
沒有資料庫隔離性的情況下,多使用者併發操作可能會發生的問題。
- 髒讀:髒讀是指一個事務讀取了未提交事務執行過程中的資料。
- 不可重複讀:對於資料庫中的某個資料,一個事務執行過程中多次查詢返回不同查詢結果,這就是在事務執行過程中,資料被其他事務提交修改了。不可重複讀同髒讀的區別在於,髒讀是一個事務讀取了另一未完成的事務執行過程中的資料,而不可重複讀是一個事務執行過程中,另一事務提交併修改了當前事務正在讀取的資料。
- 幻讀:幻讀是事務非獨立執行時發生的一種現象,例如事務T1批量對一個表中某一列列值為1的資料修改為2的變更,但是在這時,事務T2對這張表插入了一條列值為1的資料,並完成提交。此時,如果事務T1檢視剛剛完成操作的資料,發現還有一條列值為1的資料沒有進行修改,而這條資料其實是T2剛剛提交插入的,這就是幻讀。
MySQL定義了四種隔離級別解決
- 可重複讀
- 讀取提交內容
- 讀取未提交內容
- 可序列化