ndb存儲引擎
MySQL有多種存儲引擎,每種存儲引擎有各自的優缺點,可以擇優選擇使用:
MyISAM、InnoDB、merge、memory(heap)、BDB(BerkeleyDB)、example、FEDERATED、archive、csv、BLACKHOLE。
MySQL支持數個存儲引擎作為對不同表的類型的處理器。MySQL存儲引擎包括處理事務安全表的引擎和處理非事務安全表的引擎:
· MyISAM管理非事務表。它提供高速存儲和檢索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默認的存儲引擎,除非你配置MySQL默認使用另外一個引擎。
· memory存儲引擎提供「內存中」表。merge存儲引擎允許集合將被處理同樣的MyISAM表作為一個單獨的表。就像MyISAM一樣,memory和merge存儲引擎處理非事務表,這兩個引擎也都被默認包含在MySQL中。
注釋:memory存儲引擎正式地被確定為heap引擎。
· InnoDB和BDB存儲引擎提供事務安全表。BDB被包含在為支持它的操作系統發布的MySQL-Max二進制分發版里。InnoDB也默認被包括在所 有MySQL 5.1二進制分發版里,你可以按照喜好通過配置MySQL來允許或禁止任一引擎。
· example存儲引擎是一個「存根」引擎,它不做什麼。你可以用這個引擎創建表,但沒有數據被存儲於其中或從其中檢索。這個引擎的目的是服務,在 MySQL源代碼中的一個例子,它演示說明如何開始編寫新存儲引擎。同樣,它的主要興趣是對開發者。
· ndb Cluster是被MySQL Cluster用來實現分割到多台計算機上的表的存儲引擎。它在MySQL-Max 5.1二進制分發版里提供。這個存儲引擎當前只被Linux, Solaris, 和Mac OS X 支持。在未來的MySQL分發版中,我們想要添加其它平台對這個引擎的支持,包括Windows。
· archive存儲引擎被用來無索引地,非常小地覆蓋存儲的大量數據。
· csv存儲引擎把數據以逗號分隔的格式存儲在文本文件中。
· BLACKHOLE存儲引擎接受但不存儲數據,並且檢索總是返回一個空集。
· FEDERATED存儲引擎把數據存在遠程資料庫中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C client api。在未來的分發版中,我們想要讓它使用其它驅動器或客戶端連接方法連接到另外的數據源。
比較常用的是MyISAM和InnoBD
⑵ mySQL的存儲引擎
MyISAMMySQL 5.0 之前的默認資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務
InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為默認資料庫引擎
BDB源 自 Berkeley DB,事務型資料庫的另一種選擇,支持Commit 和Rollback 等其他事務特性
Memory所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在 MySQL 重新啟動時丟失
Merge將一定數量的 MyISAM 表聯合而成一個整體,在超大規模數據存儲時很有用
Archive非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive 擁有高效的插入速度,但其對查詢的支持相對較差
Federated將不同的 MySQL 伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分布式應用
Cluster/NDB高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
CSV: 邏輯上由逗號分割數據的存儲引擎。它會在資料庫子目錄里為每個數據表創建一個 .csv 文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV 存儲引擎不支持索引。
BlackHole:黑洞引擎,寫入的任何數據都會消失,一般用於記錄 binlog 做復制的中繼
EXAMPLE 存儲引擎是一個不做任何事情的存根引擎。它的目的是作為 MySQL 源代碼中的一個例子,用來演示如何開始編寫一個新存儲引擎。同樣,它的主要興趣是對開發者。EXAMPLE 存儲引擎不支持編索引。
另外,MySQL 的存儲引擎介面定義良好。有興趣的開發者可以通過閱讀文檔編寫自己的存儲引擎。
⑶ 為什麼mysql集群中存儲引擎不能修改為NDB
應該可以,多年前搞過!
大致的說下(也許不準確,請自己查閱相關的資料):
cluster一般分為下面三種節點:
1:管理節點:
管理Cluster內的其它節點,使用ndb_mgmd命令啟動,並在啟動其它的節點前啟動;
2:數據節點:
保存 Cluster的數據,使用命令ndbd啟動,要注意此類節點數目,一般與副本數目相關,是片段的倍數;
3:SQL節點:
用於訪問 Cluster數據節點,應使用mysqld啟動;
最後,你必須依次配置並啟動;
⑷ MySQL技術內幕:InnoDB存儲引擎的目錄
推薦序
前言
致謝
第1章 mysql體系結構和存儲引擎
1.1 定義資料庫和實例
1.2.mysql體系結構
1.3 mysql表存儲引擎
1.3.1 innodb存儲引擎
1.3.2 mylsam存儲引擎,
1.3.3 ndb存儲引擎
1.3.4 memory存儲引擎
1.3.5 archive存儲引擎
1.3.6 federated存儲引擎
1.3.7 maria存儲引擎
1.3.8其他存儲引擎
1.4 各種存儲引擎之間的比較
1.5 連接mysql
1.5.1 tcp/ip
1.5.2命名管道和共享內存
1.5.3 unix域套接宇
.1.6 小結
第2章 innodb存儲引擎
2.1.innodb存儲引擎概述
2.2 innodb體系架構
2.2.1後台線程
2.2.2內存
2.3 masteithread
2.3.1 masterthread源碼分析
2.3.2 masterthread的潛在問題
2.4 關鍵特性
2.4.1插入緩沖
2.4.2兩次寫
2.4.3自適應哈希索引
2.5 啟動、關閉與恢復
2.6 innodbplugin:新版本的innodb存儲
引擎
2.7 小結
第3章 文件
3.1 參數文件
3.1.1什麼是參數
3.1.2參數類型
3.2 日誌文件
3.2.1錯誤日誌
3.2.2慢查詢日誌
3.2.3查詢日誌
3.2.4二進制日誌
3.3 套接字文件
3.4 pid文件
3.5 表結構定義文件
3.6 innodb存儲引擎文件
3.6.1表空間文件
3.6.2重做日誌文件
3.7 小結
第4章 表
4.1 innodb存儲引擎表類型
4.2 innodb邏輯存儲結構
4.2.1表空間
4.2.2段
4.2.3區
4.2.4頁
4.2.5行
4.3 innodb物理存儲結構
4.4 innodb行記錄格式
4.4.1 compact行記錄格式
4.4.2 rendant行記錄格式
4.4.3行溢出數據
4.4.4 compressed與dynamic行記錄格式
4.4.5 char的行結構存儲
4.5 innodb數據頁結構
4.5.1 fileheader
4.5.2 pageheader
4.5.3 infimum和supremum記錄
4.5.4 userrecords與freespace
4.5.5 pagedirectory
4.5.6 filenailei
4.5.7 innodb數據頁結構示例分析
4.6 namedfileformats
4.7 約束
4.7.1數據完整性
4.7.2約束的創建和查找
4.7.3約束和索引的區別
4.7.4對於錯誤數據的約束
4.7.5 enum和set約束
4.7.6觸發器與約束
4.7.7外鍵
4.8 視圖
4.8.1視圖的作用
4.8.2物化視圖
4.9 分區表
4.9.1分區概述
4.9.2 range分區
4.9.3 list分區
4.9.4 hash分區
4.9.6 columns分區
4.9.7子分區
4.9.8分區中的null值
4.9.9分區和性能
4.10 小結
第5章 索引與演算法
5.1 innodb存儲引擎索引概述
5.2 二分查找法
5.3 平衡二叉樹
5.4 b+樹
5.4.1 b+樹的插入操作
5.4.2 b+樹的刪除操作
5.5 b+樹索引
5.5.1聚集索引
5.5.2輔助索引
5.5.3 b+樹索引的管理
5.6 b+樹索引的使用
5.6.1什麼時候使用b+樹索引
5.6.2順序讀、隨機讀與預讀取
5.6.3輔助索引的優化使用
5.6.4聯合索引
5.7 哈希演算法
5.7.1哈希表
5.7.2 innodb存儲引擎中的哈希演算法
5.7.3自適應哈希索引
5.8 小結
第6章 鎖
6.1 什麼是鎖
6.2 innodb存儲引擎中的鎖
6.2.1鎖的類型
6.2.2一致性的非鎖定讀操作
6.2.3 selectforupdp/te&selectlockinsharemode
6.2.4自增長和鎖
6.2.5外鍵和鎖
6.3 鎖的演算法
6.4 鎖問題
6.4.1丟失更新
6.4.2臟讀
6.4.3不可重復讀
6.5 阻塞
6.6 死鎖
6.7 鎖升級
6.8 小結
第7章 事務
7.1 事務概述
7.2 事務的實現
7.2.1 redo
7.2.2 undo
7.3 事務控制語句
7.4 隱式提交的sql語句
7.5 對於事務操作的統計
7.6 事務的隔離級別
7.7 分布式事務
7.8 不好的事務習慣
7.8.1在循環中提交
7.8.2使用自動提交
7.8.3使用自動回滾
7.9 小結
第8章 備份與恢復
第9章 性能調優
第10章 innodb存儲引擎源代碼的編譯
⑸ mysql選擇哪個存儲引擎比較合適
以前可能myiasm、innodb、ndb這三種比較多
8.0版本後myiasm被拿掉了
⑹ mysql集群ndb和drdb那個比較好一些,我數據日訪問量500w數據,數據達到T級別。哪位高手可以指導一下。
比較:
ndb是一種存儲引擎,通常在mysql cluster中使用,MySQL Cluster 是一個基於NDB Cluster 存儲引擎的完整的分布式資料庫系統。
和Oracle Real Cluster Application 不太一樣的是,MySQL Cluster 是一個Share Nothing 的架構
各個MySQLServer 之間並不共享任何數據,高度可擴展以及高度可用方面的突出表現是其最大的特色。
目前還是MySQL 家族中的一個新興產品
優勢:可用性非常高,性能非常好。每一分數據至少在不同主機上面存在一份拷貝,且
冗餘數據拷貝實時同步。
劣勢:維護較為復雜,產品還比較新,存在部分bug,目前還不一定適用於比較核心的
線上系統。
drdb是一種數據高可用 數據冗餘方案
簡單來說,DRBD 其實就是通過網路來實現塊設備的數據鏡像同步的一款開源Cluster
軟體,也被俗稱為網路RAID1
優勢:軟體功能強大,數據在底層快設備級別跨物理主機鏡像,且可根據性能和可靠性
要求配置不同級別的同步。IO 操作保持順序,可滿足資料庫對數據一致性的苛刻要求。
劣勢:非分布式文件系統環境無法支持鏡像數據同時可見,性能和可靠性兩者相互矛盾,
無法適用於性能和可靠性要求都比較苛刻的環境。維護成本高於MySQL Replication。
初步結論:樓主數據量大,還是超大,如果業務不是特別關鍵,建議用MySQL Cluster,遇到BUG也為MySQL Cluster提供些問題和建議,一起完善它。
如果業務又很關鍵,那還要具體分析,為什麼要採用集群,是哪裡存在瓶頸了,據我所了解,MYSQL如果是關鍵業務,數據量又大,訪問量也大,今後還會更大,可能無限制增長,那還是從數據分割上下手。如果只是量大,但增長不會長期,那把伺服器性能提升下得了,同時對資料庫優化參數多研究下。硬體主要是CPU能力、內存大小,磁碟性能,磁碟做RAID10或RAID50是最好的,不要做RAID5或RAID1。
⑺ mysql到底用哪一款存儲引擎
myisam、innodb、heap(memory)、ndb
貌似一般都是使用
innodb的,
mysql的存儲引擎包括:myisam、innodb、bdb、memory、merge、example、ndbcluster、archive、csv、blackhole、federated等,其中innodb和bdb提供事務安全表,其他存儲引擎都是非事務安全表。
最常使用的2種存儲引擎:
1.myisam是mysql的默認存儲引擎,當create創建新表時,未指定新表的存儲引擎時,默認使用myisam。每個myisam在磁碟上存儲成三個文件。文件名都和表名相同,擴展名分別是.frm(存儲表定義)、.myd(mydata,存儲數據)、.myi(myindex,存儲索引)。數據文件和索引文件可以放置在不同的目錄,平均分布io,獲得更快的速度。
2.innodb存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比myisam的存儲引擎,innodb寫的處理效率差一些並且會佔用更多的磁碟空間以保留數據和索引。
⑻ 誰做過mysql的ndb cluster,求教關於索引的問題
誰做過mysql的ndb cluster,求教關於索引的問題
「NDB」 是一種「內存中」的存儲引擎,也是事務型存儲引擎,具備ACID屬性。
管理(MGM)節點:負責管理MySQL Cluster內的其他節點,如提供配置數據、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用命令「ndb_mgmd」啟動的。
⑼ Mysql資料庫3種存儲引擎有什麼區別
MySQL常見的三種存儲引擎為InnoDB、MyISAM和MEMORY。其區別體現在事務安全、存儲限制、空間使用、內存使用、插入數據的速度和對外鍵的支持。具體如下:
1、事務安全:
InnoDB支持事務安全,MyISAM和MEMORY兩個不支持。
2、存儲限制:
InnoDB有64TB的存儲限制,MyISAM和MEMORY要是具體情況而定。
3、空間使用:
InnoDB對空間使用程度較高,MyISAM和MEMORY對空間使用程度較低。
4、內存使用:
InnoDB和MEMORY對內存使用程度較高,MyISAM對內存使用程度較低。
5、插入數據的速度:
InnoDB插入數據的速度較低,MyISAM和MEMORY插入數據的速度較高。
6、對外鍵的支持:
InnoDB對外鍵支持情況較好,MyISAM和MEMORY兩個不支持外鍵。
三種引擎特點如下:
1、InnoDB存儲引擎
InnoDB是事務型資料庫的首選引擎,支持事務安全表(ACID),其它存儲引擎都是非事務安全表,支持行鎖定和外鍵,MySQL5.5以後默認使用InnoDB存儲引擎。
InnoDB特點: 支持事務處理,支持外鍵,支持崩潰修復能力和並發控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現並發控制(比如售票),那選擇InnoDB有很大的優勢。
如果需要頻繁的更新、刪除操作的資料庫,也可以選擇InnoDB,因為支持事務的提交(commit)和回滾(rollback)。
2、MyISAM存儲引擎
MyISAM基於ISAM存儲引擎,並對其進行擴展。它是在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事務,不支持外鍵。
MyISAM特點: 插入數據快,空間和內存使用比較低。如果表主要是用於插入新記錄和讀出記錄,那麼選擇MyISAM能實現處理高效率。如果應用的完整性、並發性要求比較低,也可以使用
3、MEMORY存儲引擎
MEMORY存儲引擎將表中的數據存儲到內存中,為查詢和引用其他表數據提供快速訪問。
MEMORY特點: 所有的數據都在內存中,數據的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數據的安全性要求較低,可以選擇MEMOEY。
它對表的大小有要求,不能建立太大的表。所以,這類資料庫只使用在相對較小的資料庫表。
(9)ndb存儲引擎擴展閱讀:
mysql其餘不太常見的存儲引擎如下:
1、BDB: 源自Berkeley DB,事務型資料庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性
2、Merge :將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用
3、Archive :非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差
4、Federated: 將不同的Mysql伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分布式應用
5、Cluster/NDB :高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
6、CSV: 邏輯上由逗號分割數據的存儲引擎。它會在資料庫子目錄里為每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV存儲引擎不支持索引。
7、BlackHole :黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做復制的中繼
⑽ 什麼是NDB文件格式怎樣處理
在我們的文檔中,術語NDB指的是與存儲引擎相關的設置部分,NDB是一種「內存中」存儲引擎,它具有可用性高和數據一致性好的特點。