MySQL數據庫——介紹

目錄

1、數據庫 和 數據庫實例的區別

2、啓動數據庫

3、存儲引擎

3.1、InnoDB引擎

3.2、MyISAM引擎

3.3、NDB引擎

3.4、Memory引擎

3.5、Archive引擎

3.6、Federated引擎

3.7、Maria引擎

3.8、各種引擎的比較

4、連接數據庫


1、數據庫 和 數據庫實例的區別

數據庫是一系列文件的集合,是靜止的。而數據庫實例是運行起來的進程,是動態的,通過運行起來的數據庫實例去操作數據庫。MySQL數據庫實例是單進程的(包含多線程),一般一個實例對應一個數據庫,但是對於集羣或者分佈式,可能多個實例對應於一個數據庫。

2、啓動數據庫

安裝好MySQL後,啓動數據庫:./mysql &

& 作爲命令參數,表示將MySQL作爲後臺進程,即便我們關閉了命令行窗口,數據庫依然是運行的。

查看MySQL進程信息:ps -ef | grep mysql 

ps -ef 是一個命令,表示按照一定格式輸出所有進程的信息;| 表示管道符,作用是將左邊命令的輸出作爲右邊命令的輸入; grep mysql也是一個命令,表示在輸入的內容中搜索帶有mysql信息的內容,此處就是搜索所有進程信息中包含 mysql 字符串的進程信息。

啓動的過程:mysql的啓動會根據數據庫配置文件裏的參數來初始化,linux系統版本的mysql的配置文件一般my.cnf,但是windows版本mysql的配置文件時my.ini,如果數據庫文件丟失,也可以啓動,因爲在mysql軟件的代碼裏面本身就設置了默認配置參數,所以也能啓動成功。

3、存儲引擎

什麼是存儲引擎?比如執行一條sql語句,只需要我們輸入sql指令即可,但是具體怎麼執行的呢,具體對數據庫的操作與執行就是存儲引擎做的事情了,MySQL擁有多種存儲引擎,InnoDB、MyISAM、Memory等等,沒種存儲引擎都有自己的特性、優勢和支持的服務,所以,瞭解幾個存儲引擎是有必要的,在針對特定的開發需求時,可以選擇一個合適的存儲引擎。

MySQL是開源的,定義了存儲引擎的接口,但是具體的實現可以由我們自己去做(自定義存儲引擎)。

由於InnoDB的功能非常棒,因此,它是MySQL的默認存儲引擎。

3.1、InnoDB引擎

1、支持事務,支持全文索引。

2、每張表必須有主鍵,如果用戶沒有定義主鍵,InnoDB自動生成一個6字節的ROWID字段作爲主鍵,每張表的記錄都是按照主鍵順序進行存儲的。 

3、支持外鍵,有行鎖設計(寫數據的時候,要對該行記錄加鎖,避免數據出錯,但是讀取數據的時候,不會加鎖)。

4、高併發性,提供4種標準的隔離級別。

5、提供插入緩衝,二次寫,自適應哈希索引,預讀等高性能功能。

3.2、MyISAM引擎

1、支持全文索引(不支持事務)。

2、數據文件和索引文件是2種不同類型的文件,可以使用myisampack工具對數據文件進行壓縮和解壓。

3、MyISAM默認支持一張表的最大存儲爲256TB。

4、MyISAM的緩存(內存)只用於存儲索引文件(支持大於4G的緩存大小),數據文件如果需要被緩存的話,交給操作系統完成。

3.3、NDB引擎

1、它是一個針對集羣的存儲引擎。

2、將全部數據存放在內存中,也可以只將主鍵數據放在內存中,因此主鍵查詢速度非常快。

3、每臺機器的內存有限,那麼可以通過添加NDB存儲節點來線性提高數據庫性能。

感覺和redis很像哦~,在此保留一個疑問。

3.4、Memory引擎

1、將數據全部存放在內存中,如果斷電或者系統崩潰,數據將消失。

2、默認使用哈希索引。

3、只支持表鎖,併發性差(表鎖是以表爲單位)。

4、不支持TEXT 和 BLOB 類型。

5、如果Memory引擎表的容量無法存儲查詢的結果集,或者結果集中有TEXT、BLOB類型,會將其轉換爲MyISAM表存放到磁盤中,磁盤的讀取速度慢,這樣會影響性能。

感覺這個更像redis了。

3.5、Archive引擎

1、只支持插入 和 查詢操作。

2、存儲數據時會進行壓縮,壓縮比可達 1 :10。

3、適合存儲歸檔數據,支持行鎖,高併發。

4、不是事務安全的。

3.6、Federated引擎

1、不存儲數據,只是指向一臺遠程MySQL數據庫服務器上的表。

3.7、Maria引擎

1、支持緩存 數據文件 和 索引文件。

2、支持行鎖。

3、支持事務。

是MyISAM引擎的升級版本。

3.8、各種引擎的比較

 

每種引擎都各有特點,所以每種引擎的表格的類型是不同的,所以才常常說什麼引擎表,比如InnoDB引擎表,只是我們在開發的時候,呈現給我看的就是一張包含業務數據的關係表而已。比如在不同的引擎下,同樣創建一張空表,這些表所佔的空間大小都是不一樣的,因爲這些表還包含了不同的特有屬性。

4、連接數據庫

一種是MySQL本身提供的(連接,操作)程序,這種是本地的,就是我們用命令行的形式去操作MySQL。另一種是遠程連接,需要在用戶端有一個遠程連接進程,這個連接進程會與MySQL數據庫進程進程連接通信,以達到對數據庫的操作。進程間的通信方法有匿名管道,命名管道,TCP等等。

遠程連接一般是基於TCP的,連接命令:mysql - h IP地址 -u 用戶名 -p       。

本地連接一般用管道或者共享內存方式通信。

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