Mysql基本概念

1.數據庫引擎mysql

1).MyISAM 、 InnoDB 、 MEMPRY 、 ARCHIVE 、 BLACKHOLE 、 CSV
    A).MyISAM:提供高速存儲和檢索,以及全文搜索能力
        a).表級鎖
        b).不支持事物
        c).每一個表生成三個文件(.frm表結構 / .MYD數據 / .MYI索引)
        d).查詢快
    B).InnoDB:具備提交、回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎
        a).表級鎖、行級鎖
        b).支持事物與外鍵
        c).每一個表生成兩個文件(.frm表結構 / .idb索引和數據)
        d).操做快(增刪改)

2.數據庫索引sql

1).索引定義
    A).索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構
    B).索引是表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單
    C).索引的做用至關於圖書的目錄,能夠根據目錄中的頁碼快速找到所需的內容。
2).索引類型
    A).普通索引 normal
    B).惟一索引 unique
    C).主鍵索引(一種特殊的惟一索引,一個表只能有一個主鍵,不容許有空值)
    D).組合索引(最左原則)
    E).全文索引fulltext
3).聚簇索引的葉子節點就是數據節點,而非聚簇索引的葉子節點仍然是索引節點,只不過有指向對應數據塊的指針
    A).Innodb引擎主索引文件和數據文件爲同一份文件(主鍵的索引結構中,既存儲了主鍵值,又存儲了行數據,這種結構稱爲"聚簇索引")
    B).MYISAM引擎的索引文件(.MYI)和數據文件(.MYD)是相互獨立的(非聚簇索引)

3.數據庫鎖數據庫

1).MySQL各存儲引擎使用了三種類型(級別)的鎖定機制:
    A).表級鎖(開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的機率最高,併發度最低)
    B).頁級鎖(開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度通常)
    C).行級鎖(開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的機率最低,併發度也最高)
2).MySQL的表級鎖(MyISAM,MEMORY,CSV)
    A).表共享讀鎖(Table Read Lock)
    B).表獨佔寫鎖(Table Write Lock)
    
    **讀操做,不會阻塞其餘用戶對同一表的讀請求,但會阻塞對同一表的寫請求**
    **寫操做,則會阻塞其餘用戶對同一表的讀和寫操做**
3).MySQL的行級鎖(InnoDb,NDBCluster)(InnoDb select根據須要添加鎖)
    A).共享鎖(行級)  in share mode
    B).排他鎖(行級)  for update
    C).意向共享鎖(表級)
    D).意向排他鎖(表級)

4.數據庫事務安全

1).ACID
    A).原子性(Atomicity) 
    B).一致性(Consistency)
    C).隔離性(Isolation)
    D).持久性(Durability)
2).隔離等級
    A).序列化(serializable)          可避免髒讀、不可重複讀、幻讀的發生
    B).可重複讀(repeatable read)     可避免髒讀、不可重複讀的發生。(mysql默認)
    C).讀已提交(read committed)        可避免髒讀的發生(oracle默認)
    D).讀未提交(read uncommitted)
3).髒讀、不可重複讀、幻讀
    A).髒讀(一個事務處理過程裏讀取了另外一個未提交的事務中的數據)
         update account set money=money+100 where name=’B’;  (此時A通知B)
         update account set money=money - 100 where name=’A’; 
    B).不可重複讀(在對於數據庫中的某個數據,一個事務範圍內屢次查詢卻返回了不一樣的數據值,這是因爲在查詢間隔,被另外一個事務修改並提交了)
    C).幻讀(事務非獨立執行時發生的一種現象)
相關文章
相關標籤/搜索