九九热免费在线观看_毛片女人毛片一级毛片毛片_欧美在线视频一区二区_在线免费看av片_精品视频9999_99视频网站

行業產品

  • 行業產品

深圳市雷文電子有限公司


當前位置:深圳市雷文電子有限公司>技術文章>MySQL存儲引擎

    暫無信息


    暫無信息

經營模式:其他

商鋪產品:31條

所在地區:

聯系人: 宋生

技術文章

MySQL存儲引擎

閱讀:134發布時間:2022-2-11

MySQL 可能是最的關系數據庫管理系統 (RDBMS),作為一款免費開源軟件開發,最初由 MYSQL AB 公司提供支持,但現在歸 Oracle 所有。

在 MySQL 中,用于表的“存儲引擎"決定了數據的處理方式。有幾種可用的存儲引擎,但的是 InnoDBMyISAM

在本文中,我們將了解它們的顯著特征以及它們之間的主要區別。

在本教程中,您將學習:

  • 什么是存儲引擎
  • 如何檢查可用的存儲引擎
  • MyISAM 和 InnoDB 的主要區別
  • 如何檢查表使用的引擎
  • 如何設置和更改表使用的存儲引擎

什么是存儲引擎?

在我們討論兩個主要 MySQL 存儲引擎之間的特性和區別之前,先來了解一下什么是存儲引擎?

存儲引擎,也稱為“表處理程序",基本上是解釋和管理與數據庫表的 SQL 查詢相關的操作的數據庫部分。

在版本的 MySQL 中,可以使用“可插拔"架構來組織和管理存儲引擎,存在多種存儲引擎,但的兩個是InnoDBMyISAM

檢查可用的存儲引擎

要獲得我們正在使用的數據庫中可用存儲引擎的列表,我們所要做的就是發出一個簡單的 SQL 查詢,因此我們需要做的件事就是打開一個 MySQL 交互式提示并使用數據庫用戶登錄及其密碼:

$ mysql -u  -p

如果登錄成功,提示將變為mysql>,在這里,我們可以運行我們的 SQL 查詢來可視化可用的存儲引擎:

mysql> SHOW ENGINES;

執行查詢后,我們應該獲得類似于以下內容的結果:

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | 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         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

在上表中,作為查詢結果生成,我們可以通過查看Support每行列中的值輕松了解支持哪些存儲引擎,“YES"值表示存儲引擎可用,否則“NO"。相反,同一列中的“DEFAULT"值表示相應的引擎(在本例中為 InnoDB)是服務器使用的默認引擎。

Transactions"和“Savepoints"列中存在的值分別表示存儲引擎是否支持事務和回滾。正如我們通過查看表可以看到的,只有 InnoDB 引擎可以。

關于存儲引擎的信息存在于“INFORMATION_SCHEMA"數據庫的“ENGINES"表中,因此我們也可以發出標準的“SELECT"查詢來獲取我們需要的數據:

mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES

我們將獲得與上面看到的相同的結果。

InnoDB 與 MyISAM

讓我們看看兩個的存儲引擎 InnoDB 和 MyISAM 之間的主要特性和區別是什么。

數據庫

正如我們已經說過的, InnoDB 是自 MySQL 以來的默認存儲引擎5.5。

此存儲引擎的一些主要功能如下:

  • 支持帶有提交和回滾的事務
  • 行級鎖定
  • 外鍵支持,具有級聯更新和刪除

帶有回滾和提交的事務

對事務的支持提供了一種安全的方式來執行多個查詢以保持數據一致。

當多個修改數據的操作被執行并且我們想要確保它們只有在所有操作都成功并且沒有錯誤發生時才有效時,我們想要使用事務。

典型的處理方式是啟動事務并執行查詢:如果出現錯誤,則執行回滾,否則提交更改。

行級鎖

當使用 InnoDB 數據鎖定發生在行級別時,因此在事務期間鎖定的數據量是有限的。

InnoDB 有兩種類型的鎖:

  • 共享鎖
  • 排他鎖

一個共享鎖允許誰擁有它讀取該行的交易,而一個排它鎖允許交易執行其修改行的操作,所以要更新或刪除數據。

當一個事務在某行上獲得共享鎖,而另一個事務需要相同的鎖類型時,立即授予;但是,如果第二個事務在同一行上請求排他鎖,它將不得不等待。

如果個事務持有該行的排他鎖,則第二個事務將不得不等待該鎖被釋放以獲得共享鎖或排他鎖。

外鍵支持

外鍵是一個非常重要的特性,因為它們可用于基于表之間的邏輯關系來強制執行數據完整性。想象一下,我們的數據庫中有三個表(假設它被稱為“testdb"):一個user包含現有用戶的job表,一個注冊所有可用作業的user_job表,以及一個用于表示用戶和用戶之間存在的多對多關系的表。作業(一個用戶可以有多個作業,多個作業可以與同一個用戶關聯)。

該user_job表就是所謂的連接表或關聯表,因為它的目的是表示用戶-工作關聯。該表有兩列,一個叫user_id和其他job id。表中會存在兩個外鍵約束,強制執行以下規則:user_id列中的值只能引用表id列中的值,列中的user值job_id必須引用表id列中的現有值job.

這將強制執行完整性,因為僅允許現有用戶和作業的 ID 存在于關聯表中。刪除涉及表中一個或多個關聯的用戶或作業user_job也是不允許的,除非為相應的外鍵設置了CASCADE DELETE規則。在這種情況下,當刪除用戶或作業時,它們所涉及的關系也將被刪除。

我的ISAM

MyISAM 曾經是默認的 MySQL 存儲引擎,但已被 InnoDB 取代。使用此引擎時,數據鎖定發生在表級別,因此執行操作時鎖定的數據更多。

與 InnoDB 不同,MyISAM 不支持事務回滾和提交,因此必須手動執行回滾。MyISAM 和 InnoDB 之間的另一個很大區別是前者不支持外鍵。MyISAM 更簡單,并且在對有限數據集進行讀取密集型操作時可能具有優勢(有爭議)。

在表上使用 MyISAM 時,會設置一個標志,指示該表是否需要修復,例如在突然關閉之后。稍后可以使用適當的工具執行表修復。

檢查特定表使用的存儲引擎

如何知道特定表使用了什么存儲引擎?我們所要做的就是發出一個簡單的查詢。

例如,要知道user我們在前面的例子中提到的表使用了什么存儲引擎,我們將運行:

mysql> SHOW TABLE STATUS WHERE name = 'user' /G;

注意上面的查詢我們使用了/G,為了讓查詢結果垂直顯示,優化空間。執行查詢后,我們將獲得以下結果:

*************************** 1. row ***************************
           Name: user
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 0
Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
Auto_increment: NULL
    Create_time: 2021-12-27 09:38:16
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
Create_options:
        Comment:
1 row in set (0.00 sec)

在這種情況下,通過查看“Engine"列中存儲的值,我們可以清楚地看到該表使用的是“InnoDB"引擎。獲取相同信息的另一種方法是INFORMATION_SCHEMA.TABLES直接查詢表:

mysql> SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'testdb';

上面的查詢將只返回表使用的引擎:

+--------+
| ENGINE |
+--------+
| InnoDB |
+--------+

如果我們稍微更改查詢,我們可以獲得數據庫中所有表名的列表以及它們使用的引擎:

mysql> SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'testdb';

設置和更改表使用的存儲引擎

如果我們要為一個表設置一個特定的存儲引擎,我們可以在創建時它。例如,假設我們正在創建job表,并且出于某種原因我們想要使用 MyISAM 存儲引擎。我們將發出以下 SQL 查詢:

mysql> CREATE TABLE testdb.job ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL ) ENGINE = MyISAM;

相反,如果我們想要更改用于已存在表的存儲引擎,我們只需要使用ALTERSQL 語句。假設我們要將上一個示例中創建的“job"表所使用的存儲引擎更改為 InnoDB;我們會運行:

mysql> ALTER TABLE testdb.job ENGINE = InnoDB;

結論

在本教程中,我們學習了什么是數據庫存儲引擎,并且我們看到了兩個的 MySQL 引擎的主要特性:InnoDBMyISAM

我們看到了如何檢查哪些引擎可用、哪些引擎用于表以及如何使用 SQL 查詢設置和修改表引擎。



智慧城市網 設計制作,未經允許翻錄必究 .? ? ? Copyright(C)?2021 http://www.3121000.com,All rights reserved.

以上信息由企業自行提供,信息內容的真實性、準確性和合法性由相關企業負責,智慧城市網對此不承擔任何保證責任。 溫馨提示:為規避購買風險,建議您在購買產品前務必確認供應商資質及產品質量。

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復您~
主站蜘蛛池模板: 户外裸露刺激视频第一区 | 亚洲va天堂va国产va久 | 古典武侠激情亚洲精品一区 | 成人免费视频视频 | 色噜噜国产精品视频一区二区 | 久久久久久草 | 哪里可以看毛片 | 成人综合一区 | 久草综合网 | 日韩视频在线 | 精品美女一区二区 | 99riav在线 | 麻豆免费网站 | 91精品国产综合久 | 大人在线免费视频 | 狠狠干很很操 | 成午夜精品一区二区三区软件 | 国产成人午夜99999 | 91精品国产高清一区二区三密臀 | 伦一区二区三区中文字幕v亚洲 | 黄色网站在线观看视频 | 相部屋在线| 热久久精品国产 | 久久91 | 亚洲国产高清在线观看 | 成年人视频免费看 | 龙珠z免费观看国语版 | 久久精品久久久精品美女 | 欧美一区二区久久 | 伊人网综 | 欧美亚洲视频 | 精品国产福利 | 精品国产乱码久久久久久1区2区 | 色av成人天堂桃色av | 久草精品在线播放 | 日本日本精品二区免费 | 奇色影视 | 第一页在线观看 | 免看一级a毛片一片成人不卡 | 高清免费在线视频 | 欧美午夜a级限制福利片 |