[MySQL Reference Manual]15. 其他存儲引擎

来源:http://www.cnblogs.com/Amaranthus/archive/2016/01/28/5165492.html
-Advertisement-
Play Games

<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;} @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1


15. 其他存儲引擎

15. 其他存儲引擎... 1

15.1 設置存儲引擎... 3

15.2 MyISAM存儲引擎... 4

15.2.1 MyISAM啟動選項... 5

15.2.2 Key的空間要求... 5

15.2.3 MyISAM表存儲格式... 5

15.2.3.1 靜態表特性... 5

15.2.3.2 動態表特性... 6

15.2.3.3 壓縮表特性... 6

15.2.4 MyISAM表問題... 7

15.2.4.1 MyISAM表損壞... 7

15.2.4.2 表沒有被正確關閉... 7

15.3 MEMORY存儲引擎... 8

15.3.1 性能特點... 9

15.3.2 MEMORY表的物理特性... 9

15.2.3 MEMORYDDL操作... 9

15.2.4 索引... 9

15.2.5 用戶創建和臨時表... 10

15.2.6 導入數據... 10

15.2.7 MEMORY表和複製... 10

15.2.8 管理記憶體使用... 10

15.3 CSV存儲引擎... 11

15.3.1 CSV表的檢查和修複... 11

15.3.2 CSV的限制... 11

15.4 ARCHIVE存儲引擎... 12

15.5 BLACKHOLE 存儲引擎... 13

15.7 MERGE存儲引擎... 14

15.7.1 MERGE表的優缺點... 16

15.7.2 MERGE表問題... 16

15.8 FEDERATED存儲引擎... 17

15.8.1 FEDERATED存儲引擎概述... 17

15.8.2 如何創建FEDERATED... 18

15.8.2.1 使用CONNECTION創建FEDERATED.. 18

15.8.2.2 創建FEDERATED表使用CREATE SERVER. 19

15.8.3 FEDERATED存儲引擎註意點... 20

15.8.4 FEDERATED存儲引擎資源... 21

15.9 EXAMPLE存儲引擎... 21

15.10 其他存儲引擎... 21

15.11 MySQL存儲引擎概述... 21

15.11.1 插件是存儲引擎結構... 21

 

存儲引擎是MySQL組件,用來控制不同表類型的SQL操作。InnoDB是預設而且是最常用的存儲引擎,Oracle推薦使用,除非是特別的使用場景。

MySQL Server使用可插入的存儲引擎結構可以讓正在運行MySQL的存儲引擎loadunload

可以使用SHOW ENGINES語句來決定引擎是不是可以使用。Support欄位說明引擎是不是被支持。

MySQL 5.6支持的存儲引擎

InnoDBMySQL 5.6預設的存儲引擎。InnoDB是事務安全的存儲引擎,有commitrollbackcrash-recovery功能來保護用戶數據。InnoDB行級鎖和Oracle樣式的一致性無鎖讀,增加多用戶併發和性能。InnoDB以聚集索引方式存儲用戶數據,對主鍵查詢,可以減少IOInnoDB也支持外鍵約束。

MyISAM:這些表footprint比較小,表級鎖定限制了讀寫性能,一般用於只讀或者讀多寫少的應用。

Memory:所有的數據都存放在RAM內,能夠快速的訪問數據。這個引擎就是以前的HEAP引擎。

CSV:這個表實際上是文本文件使用了逗號分隔值。CSV表一般用於導入導出,數據線存放在InnoDB,在需要導入導出的時候轉為CSV表。

Archive:這個是緊密的非索引表,用來存儲和獲取大量數據。

Blackhole:這個引擎其實不保存數據,和linux/dev/null一樣。查詢結果都是為空,這些表可以複製,DML語句會傳到Slave,但是master不保存數據。

Merge:可以讓DBA和開發邏輯的把一些MyISAM表當成一個對象。

Federated:連接到獨立的MySQL服務,在這個邏輯資料庫上為很多歌物理服務創建對象。

Example:這個是MySQL的例子,如何開始編寫新的存儲引擎。。

 

以下是不同存儲引擎的基本特點:

 

Feature

MyISAM

Memory

InnoDB

Archive

NDB

Storage limits

256TB

RAM

64TB

None

384EB

Transactions

No

No

Yes

No

Yes

Locking granularity

Table

Table

Row

Row

Row

MVCC

No

No

Yes

No

No

Geospatial data type support

Yes

No

Yes

Yes

Yes

Geospatial indexing support

Yes

No

Yes[a]

No

No

B-tree indexes

Yes

Yes

Yes

No

No

T-tree indexes

No

No

No

No

Yes

Hash indexes

No

Yes

No[b]

No

Yes

Full-text search indexes

Yes

No

Yes[c]

No

No

Clustered indexes

No

No

Yes

No

No

Data caches

No

N/A

Yes

No

Yes

Index caches

Yes

N/A

Yes

No

Yes

Compressed data

Yes[d]

No

Yes[e]

Yes

No

Encrypted data[f]

Yes

Yes

Yes

Yes

Yes

Cluster database support

No

No

No

No

Yes

Replication support[g]

Yes

Yes

Yes

Yes

Yes

Foreign key support

No

No

Yes

No

No

Backup / point-in-time recovery[h]

Yes

Yes

Yes

Yes

Yes

Query cache support

Yes

Yes

Yes

Yes

Yes

Update statistics for data dictionary

Yes

Yes

Yes

Yes

Yes

[a] InnoDB support for geospatial indexing is available in MySQL 5.7.5 and higher.

[b] InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.

[c] InnoDB support for FULLTEXT indexes is available in MySQL 5.6.4 and higher.

[d] Compressed MyISAM tables are supported only when using the compressed row format. Tables using the compressed row format with MyISAM are read only.

[e] Compressed InnoDB tables require the InnoDB Barracuda file format.

[f] Implemented in the server (via encryption functions), rather than in the storage engine.

[g] Implemented in the server, rather than in the storage engine.

[h] Implemented in the server, rather than in the storage engine.

15.1 設置存儲引擎

當你創建新表,你會指定存儲引擎,在ENGINE選項上。

-- ENGINE=INNODB not needed unless you have set a different
-- default storage engine.
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
CREATE TABLE t2 (i INT) ENGINE = CSV;
CREATE TABLE t3 (i INT) ENGINE = MEMORY;

當你忽略ENGINE選項,就是用預設存儲引擎。目前預設存儲引擎是InnoDB。你可以 指定預設存儲引擎通過—default-storage-engine啟動參數,或者配置文件中指定default-storage-engine。也可以在runtime設置使用set命令設置變數:

SET default_storage_engine=NDBCLUSTER;

臨時表的存儲引擎,通過create temporary table來創建,預設存儲引擎通過default_tmp_storage_engine在啟動前或者runtime設置。

可以使用alter table語句來轉化表的存儲引擎

ALTER TABLE t ENGINE = InnoDB;

如果指定的存儲引擎沒有被編譯或者已經編譯了但是沒有激活,MySQL會使用預設存儲引擎來代替。為了防止被魔火,可以啟動NO_ENGINE_SUBSTITUTUIN SQL模式。如果指定的引擎不可用,會產生一個錯誤,而不是一個警告,表不會被創建。

對於新表,frm文件用來保存表和列的定義。表的索引和數據可能被存放在其他一個或者多個文件中,根據存儲引擎決定。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 Storm整體介紹 Storm 是一個類似Hadoop MapReduce的系統, 用戶按照指定的介面實現一個任務,然後將這個任務遞交給JStorm系統,Jstorm將這個任務跑起來,並且按7 * 24小時運行起來,一旦中間一個Worker 發生意外故障, 調度器立即分配一個新的Worker替
  • 前陣子搞了下資料庫同步,大概意思就是伺服器上有一個資料庫,與本地資料庫進行同步,伺服器上的資料庫有什麼改變,可以同步到本地資料庫中。做之前百度了下,流程分以下三步, 第一步: 伺服器上的資料庫進行發佈 第二步: 本地資料庫進行訂閱 第三步: 把冰箱門關上 看起來很簡單,實際上遠不是這麼一回事,把哥都
  • 有一張資金記錄表,一張金幣記錄表,想以時間為單位,降序合併排列他們之間的信息,查詢SQL如下:select * from (select * from t_money_logs union select * from t_gold_logs) as c order by create_time de
  • pg_dump 是一個用於備份PostgreSQL資料庫的工具. 該工具生成的轉儲格式可以分為兩種, 腳本 : 其中腳本格式是包含許多SQL命令的純文本格式 (常用) 歸檔文件: 需要重建資料庫就必須和pg_restore工具一起使用 下麵按照這兩種方式進行備份恢復操作。 環境簡介: 操作對象:數據
  • mysql 命令導入sql腳本數據
  • 1、為查詢優化你的查詢 大多數的MySQL伺服器都開啟了查詢緩存。這是提高性最有效的方法之一,而且這是被MySQL的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到一個緩存中,這樣,後續的相同的查詢就不用操作表而直接訪問緩存結果了。 這裡最主要的問題是,對於程式員來說,這
  • 回到目錄 之前寫過相關的文章,對臟讀,不可重覆讀,幻讀都做了相當的研究,而今天在程式中又出現了這個問題,即當一條數據被update時,另一個線程同時發起了讀的操作,這對於序列化級別的事務是不被允許的,正常情況下它應該被阻塞,當事務消失時,數據從新被讀取。 一些術語-來自百度百科 更新丟失 兩個事務都
  • sqlite是一個很小巧的,很方便嵌入到腳本語言中的,關係型資料庫。它給powershell提供了一個免費的,處理行列整齊數據,存儲數據,統計數據的極品神器。本文分享了powershell操作sqlite的例子和技巧。
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...