mysql 基礎知識總結

  1. 一張表,裏面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把Mysql重啓,再insert一條記錄,這條記錄的ID是18還是15 ?
    (1)如果表的類型是MyISAM,那麼是18
    因爲MyISAM表會把自增主鍵的最大ID記錄到數據文件裏,重啓MySQL自增主鍵的最大ID也不會丟失
    (2)如果表的類型是InnoDB,那麼是15
    InnoD
    B表只是把自增主鍵的最大ID記錄到內存中,所以重啓數據庫或者是對錶進行OPTIMIZE操作,都會導致最大ID丟失

    (3) 如果不重啓的話 兩個引擎都是從18開始

    (4)如果用truncate 兩個引擎都是從1開始


2. 字符串數據類型enum與set

(1)enum

  單選字符串數據類型,適合存儲表單界面中的“單選值”。

  設定enum的時候,需要給定“固定的幾個選項”;存儲的時候就只存儲其中的一個值。

  設定enum的格式:

    enum("選項1","選項2","選項3",...);

  實際上,enum的選項都會對應一個數字,依次是1,2,3,4,5...,最多有65535個選項

  使用的時候,可以使用選項的字符串格式,也可以使用對應的數字。

(2)set

  多選字符串數據類型,適合存儲表單界面的“多選值”。

  設定set的時候,同樣需要給定“固定的幾個選項”;存儲的時候,可以存儲其中的若干個值。

  設定set的格式:

    set("選項1","選項2","選項3",...)

  同樣的,set的每個選項值也對應一個數字,依次是1,2,4,8,16...,最多有64個選項

  使用的時候,可以使用set選項的字符串本身(多個選項用逗號分隔),也可以使用多個選項的數字之和(比如:1+2+4=7)

3.mysql log

錯誤日誌:記錄出錯信息,也記錄一些警告信息或者正確的信息。
查詢日誌:記錄所有對數據庫請求的信息,不論這些請求是否得到了正確的執行。
慢查詢日誌:設置一
個閾值,將運行時間超過該值的所有SQL語句都記錄到慢查詢的日誌文件中。
二進制日誌:記錄對數據庫執行更改的所有操作。

redo日誌:記錄已提交的修改後的數據,用於數據庫突然斷電,重啓後可以通過redolog來恢復斷電前的數據

undo日誌:記錄事務修改前的數據,用於事務回退,可以通過undolog恢復事務之前的數據

4、MySQL中myisam與innodb的區別

1>.InnoDB支持事物,而MyISAM不支持事物

2>.InnoDB支持行級鎖,而MyISAM支持表級鎖

3>.InnoDB支持MVCC, 而MyISAM不支持

4>.InnoDB支持外鍵,而MyISAM不支持

5>.InnoDB不支持全文索引,而MyISAM支持。


(2)、innodb引擎的4大特性

插入緩衝(insert buffer),二次寫(double write),自適應哈希索引(ahi),預讀(read ahead)

(3)、2者selectcount(*)哪個更快,爲什麼

myisam更快,因爲myisam內部維護了一個計數器,可以直接調取。




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