<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # MySQL 存儲引擎 > 原文: [http://zetcode.com/databases/mysqltutorial/storageengines/](http://zetcode.com/databases/mysqltutorial/storageengines/) 在本章中,我們將討論 MySQL 存儲引擎。 存儲引擎是軟件模塊,數據庫管理系統使用該軟件模塊來創建,讀取和更新數據庫中的數據。 MySQL 中有兩種類型的存儲引擎:事務性和非事務性。 對于 MySQL 5.5 和更高版本,默認存儲引擎為 InnoDB。 5.5 版之前的 MySQL 默認存儲引擎為 MyISAM。 選擇正確的存儲引擎是一項重要的戰略決策,它將影響未來的發展。 在本教程中,我們將使用 MyISAM,InnoDB,內存和 CSV 存儲引擎。 如果您不熟悉 MySQL,并且正在研究 MySQL 數據庫管理系統,則不必擔心。 如果您要計劃生產數據庫,那么事情將變得更加復雜。 ## 存儲引擎列表 MySQL 支持的存儲引擎: * InnoDB * MyISAM * 內存 * CSV * 合并 * 歸檔 * 聯合 * 黑洞 _InnoDB_ 是使用最廣泛的具有事務支持的存儲引擎。 它是符合 ACID 的存儲引擎。 它支持行級鎖定,崩潰恢復和多版本并發控制。 它是唯一提供外鍵引用完整性約束的引擎。 Oracle 建議將 InnoDB 用于表,特殊用例除外。 _MyISAM_ 是原始存儲引擎。 這是一個快速的存儲引擎。 它不支持事務。 MyISAM 提供表級鎖定。 它主要用于 Web 和數據倉庫。 內存存儲引擎在內存中創建表。 這是最快的引擎。 它提供表級鎖定。 它不支持事務。 內存存儲引擎非常適合創建臨時表或快速查找。 重新啟動數據庫后,數據將丟失。 _CSV_ 將數據存儲在 CSV 文件中。 它提供了極大的靈活性,因為這種格式的數據很容易集成到其他應用中。 合并對基礎 MyISAM 表進行操作。 合并表有助于更輕松地管理大量數據。 它在邏輯上對一系列相同的 MyISAM 表進行分組,并將它們引用為一個對象。 適用于數據倉庫環境。 歸檔存儲引擎針對高速插入進行了優化。 插入時壓縮數據。 它不支持事務。 它是存儲和檢索很少參考的歷史,存檔數據的理想選擇。 黑洞存儲引擎接受但不存儲數據。 檢索總是返回一個空集。 該功能可用于分布式數據庫設計中,在該數據庫中,數據將自動復制,但不會存儲在本地。 該存儲引擎可用于執行性能測試或其他測試。 聯合存儲引擎提供了將 MySQL 服務器分離以從許多物理服務器創建一個邏輯數據庫的能力。 本地服務器上的查詢將在遠程(聯合)表上自動執行。 沒有數據存儲在本地表上。 這對分布式環境很有用。 ```sql mysql> SHOW ENGINES\G *************************** 1\. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES *************************** 2\. row *************************** Engine: CSV Support: YES Comment: CSV storage engine Transactions: NO XA: NO Savepoints: NO ... ``` `SHOW ENGINES`命令顯示服務器支持的所有可用引擎。 ## 選擇合適的引擎 沒有存儲引擎在所有情況下都是理想的。 有些在某些條件下表現最佳,而在其他情況下則表現較差。 存在一些必須考慮的折衷。 一個更安全的解決方案會占用更多資源; 它可能會更慢,需要更多的 CPU 時間和磁盤空間。 MySQL 提供了多種不同的存儲引擎,因此非常靈活。 其中一些文件(例如存檔引擎)是為在特定情況下使用而創建的。 在某些情況下,答案很明確。 每當我們處理某些支付系統時,我們都有義務使用最安全的解決方案。 我們無法承受丟失此類敏感數據的風險。 InnoDB 是必經之路。 如果要全文搜索,則可以選擇 MyISAM 或 InnoDB。只有 InnoDB 支持外鍵引用完整性約束,如果我們計劃使用此約束,則選擇很明確。 ## 指定和更改存儲引擎 在創建表時指定存儲引擎。 ```sql mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), -> Cost INTEGER) ENGINE='MyISAM'; ``` `ENGINE`關鍵字指定用于此特定表的存儲引擎。 如果我們未明確指定存儲引擎,則使用默認存儲引擎。 在 MySQL 5.5 之前,默認存儲引擎是 MyISAM。 對于 MySQL 5.5 及更高版本,默認存儲引擎為 InnoDB。 可以遷移到其他存儲引擎。 請注意,遷移大表可能需要很長時間。 另外,在遷移表時,我們可能會遇到一些問題。 這兩個表可能不支持某些功能。 ```sql mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars'; +--------+ | ENGINE | +--------+ | InnoDB | +--------+ 1 row in set (0,05 sec) ``` 該 SQL 語句在`mydb`數據庫中找出用于`Cars`表的存儲引擎。 我們也可以使用`SELECT CREATE TABLE Cars` SQL 語句。 `information_schema`是存儲有關我們表的技術信息的表。 ```sql mysql> ALTER TABLE Cars ENGINE='MyISAM'; ``` 該 SQL 語句將`Cars`表的存儲引擎更改為 MyISAM。 ```sql mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars'; +--------+ | ENGINE | +--------+ | MyISAM | +--------+ 1 row in set (0,00 sec) ``` 現在,表的存儲引擎是 MyISAM。 在 MySQL 教程的這一部分中,我們介紹了存儲引擎。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看