第五節 MySQL的資料型別和儲存引擎介紹

2022-02-19 12:13:24 字數 2718 閱讀 1224

一. mysql資料型別

1. 整數型別

注:mysql可以為整數型別指定寬度,比如 int(3)、int(5),這個限制不是限制value的合法範圍,所以對絕大數應用沒有任何意義,對於儲存而言,int(3) 和 int(5) 是相同的,只是對一些mysql的互動工具顯式字元的個數有用,如mysql客戶端。

2. 浮點型別

注:float和double型別會存在不夠精確的問題,高精度要求建議使用decimal型別,可能會出現下圖現象:

3. 字元型別

補充:char和varchar的區別

4. 日期型別

5. 二進位制型別

6. 大資料型別

7. 列舉型別和集合型別

(1). 列舉

enum列舉型別是字串型別,mysql在儲存此型別資料時,直接轉化成數字儲存而不是字串,可以節省空間,並且在表的.frm檔案中儲存「數字----字串 」之間的對應關係。

enum列舉型別最多可以有65535個值,當插入數字到列舉型別的字段時,數字會被當做列舉值的第n個值插入。

(2). 集合

set集合型別是字串型別,可以含有0個或多個值,其中每個值都需要在建立欄位的適合指定到集合中。

補充:mysql和c#對應關係

sqlserver資料型別詳見:

二. 儲存引擎

1. 含義

儲存引擎是 mysql 中具體與檔案打交道的子系統,它是根據 mysql ab 公司提供的檔案訪問層抽象介面定製的一種檔案訪問機制,這種機制就叫作儲存引擎,下面是一些常用的儲存引擎,有遠古時期的 myisam、支援事務的 innodb、記憶體型別的 memory、歸檔型別的 archive、列式儲存的 infobright,以及一些新興的儲存引擎,以 rocksdb 為底層基礎的 myrocks 和 rocksdb,和以分形樹索引組織儲存的 tokudb。

注:mysql 5.6 版本之前,預設的儲存引擎都是myisam,但 5.7 版本及以後預設的儲存引擎就是innodb了。

2. myisam和innodb對比

(1). 功能對比

innodb 支援 acid 的事務 4 個特性,而 myisam 不支援;

innodb 支援 4 種事務隔離級別,預設是可重複讀 repeatable read 的,myisam 不支援;

innodb 支援 crash 安全恢復,myisam 不支援;

innodb 支援外來鍵,myisam 不支援;

innodb 支援行級別的鎖粒度,myisam 不支援,只支援表級別的鎖粒度;

innodb 支援 mvcc,myisam 不支援;

innodb 表最大還可以支援 64tb,支援聚簇索引、支援壓縮資料儲存,支援資料加密,支援查詢/索引/資料快取記憶體,支援自適應hash索引、空間索引,支援熱備份和恢復等,如下圖所示。

(2). 效能對比

a. 讀寫混合模式下,隨著 cpu 核數的增加,innodb 的讀寫能力呈線性增長。

b. 在測試用例裡,最高可達近 9000 的 tps,但 myisam 因為讀寫不能併發,它的處理能力跟核數沒關係,呈一條水平線,tps 低於 500。

c. 唯讀模式下,隨著 cpu 核數的增加,innodb 的讀寫能力呈線性增長,最高可達近 14000 的 tps,但 myisam 的處理能力不到 3000 tps。

3. innodb儲存引擎核心點

!

第五節 資料型別轉換

特點 不需要進行特殊處理,自動完成 規則 資料範圍從大到小 public class datatype 特點 需要進行特殊處理,不能自動完成 格式 範圍小的型別 範圍小的變數名 範圍小的型別 範圍大的資料 public class datatype 強制型別轉換一般不推薦使用,有可能發生精度損失 資...

第五節 19可空資料型別

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

資料結構第五節

1.棧 stack 是運算受限的線性表,這種線性表上的 插入和刪除運算限定在表的某一端進行,允許進行插入和刪除的一端稱為棧頂,另一端稱為棧底.不含任何資料元素的棧稱為空棧.處於棧頂位置的元素稱為棧頂元素.棧的修改原則是後進先出,因此,棧又稱為後進先出線性表,簡稱後進先出表.棧的插入和刪除運算分別稱為...