MySQL入門學習筆記之存儲引擎

1、什麼是存儲引擎?

存儲引擎就是指表的類型,數據庫的存儲引擎決定了表在計算機中的存儲方式。而存儲引擎的概念是MySQL的特點,是一種插入式的存儲引擎概念。MySQL數據庫中的表可以使用不同的方式存儲。

 

2、如何查看MySQL 中支持的存儲引擎?

       在命令行中輸入: SHOW ENGINES;

mysql>SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

        在命令後面通過參數 \G’可以調整數據的輸出格式,使得顯示更加直觀。

        mysql> SHOW ENGINES \G

mysql>SHOW ENGINES \G

*************************** 1. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 9. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
9 rows in set (0.00 sec)

 查詢結果參數說明:

         Engine參數:表示存儲引擎的名稱

         Support參數:表示是否支持該類型的存儲引擎,YES表示支持,NO表示不支持。

         Comment參數:對該引擎的一些描述。

        Transactions 參數:表示是否支持事務處理,YES表示支持,NO不支持。

XA參數:表示是否遵循分佈式交易處理的XA規範,YES 支持,NO不支持。

Savepoints參數:表示是否支持保存點,可以使事務回滾到保存點,yes表示支持。

其它方法查詢:

      mysql> SHOW  VARIABLES LIKE 'have%'

查詢結果如下:

mysql>SHOW VARIABLES LIKE 'have%';
+----------------------+----------+
| Variable_name        | Value    |
+----------------------+----------+
| have_compress        | YES      |
| have_crypt           | NO       |
| have_dynamic_loading | YES      |
| have_geometry        | YES      |
| have_openssl         | DISABLED |
| have_profiling       | YES      |
| have_query_cache     | YES      |
| have_rtree_keys      | YES      |
| have_ssl             | DISABLED |
| have_symlink         | YES      |
+----------------------+----------+
10 rows in set (0.00 sec)

參數說明:Variable_name表示存儲引擎的名稱, Value表示MySQL的支持情況

YES 表示支持,NO表示不支持,DISABLED 表示支持但沒有開啓。


查看默認支持的存儲引擎:

Mysql> SHOW VARIABLE LIKE 'storage_engine';

mysql>SHOW VARIABLES LIKE 'storage_engine';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
1 row in set (0.00 sec)

從輸出結果中看出,本版本中用的默認存儲引擎爲InnoDB

注意:本實驗中用到的mysql版本爲5.6,在使用5.7的版本輸入該命令時,發現

不能輸出,出現警告信息,原因未知。

可以 通過修改MySQL的配置文件,來修改MySQL中默認的存儲引擎,在my.ini文件

中將"default-storage-engine=INNODB"改爲“default-storage-engine=MyISAM,修改完成後

需要重啓一下服務,修改才能生效。

 

3InnoDB存儲引擎

InnoDB MySQL數據庫中的默認的存儲引擎,InnoDBMySQL表提供了事務、回滾、崩潰修

復能力 和多版本併發控制的事務安全

特點:

        1> 支持自增長列AUTO_INCREMENT ,自增長列不能爲空,而且值必須唯一,在MySQL中規定自增長列必須爲主鍵。

       2> 支持外鍵FOREIGN KEY 外鍵所在的表爲子表,外鍵所依賴的表爲父表。父表中被子表

外鍵關聯 的字段必須爲主鍵。當刪除、更新父表中的某條信息時,子表也必須有相應的改變。

       3> InnoDB存儲引擎創建的表的表結構存儲在.frm文件中。數據和索引存儲在innodb_data_home_dirinnodb_data_file_path定義的表空間中。

優點:提供良好的事務管理、崩潰修復能力和併發控制。

缺點 讀寫效率稍差,佔用的數據空間相對較大。

 

4 MyISAM存儲引擎

特點:MyISAM存儲引擎的表存儲爲3個文件。文件名與表名相同。擴展名包括frmMYD

MYI frm爲擴展名的文件存儲表的結構,MYD爲擴展名的文件存儲數據,MYI爲擴展名的文件存儲索引。

優點:佔用空間小。處理速度快。

缺點:不支持事務的完整性和併發性。

5MEMORY 存儲引擎

    MEMORY存儲引擎是存儲在內存中的內容來創建表,所有的數據都是放在內存中的。每個MEMORY存儲引擎的表對應一個磁盤文件。文件名與表名相同,類型爲frm 該文件只存儲表的結構。數據文件是存儲在內存當中的,有利於數據的快速處理,提高整個表的處理效率。

 

6InnoDB MyISAMMEMORY三種存儲引擎的對比

1 3種存儲引擎的對比

 

特性

InnoDB

MyISAM

MEMORY

事務安全

支持

存儲限制

64TB

空間使用

內存使用

插入數據的速度

對外鍵的支持

支持

 

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