MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕鬆成為MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美元的價格,將自己創建的公司MySQL AB賣給了SUN,此後,隨著SUN被甲骨文收購,MySQL的所有權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。
MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發者希望提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX存儲引擎。
基本介紹
- 中文名:MariaDB資料庫管理系統
- 外文名:MariaDB
- 所屬:MySQL的一個分支
- 主要維護者:開源社區
- 類別:存儲引擎
- 進制:二進制
- 授權許可:GPL
版本
發展
起源
特點
High Performance | Developers | DBAs | NoSQL |
---|---|---|---|
Thread pool 執行緒池 | Microsecond precision & type 微秒支持 | Segmented MyISAM keycache MyISAM快取分段 | HandleSocket 直接InnoDB/XtrDB訪問 |
Group commit for the binary log binlog組提交 | SphinxSE for full-text search SphinxSE全文索引支持 | Authentication plugins - PAM, Active Directory 授權外掛程式 | Dynamic columns 動態列 |
Non-blocking client library 非阻塞庫 | Subqueries materialize 子查詢最佳化 | LIMIT ROWS EXAMINED LIMIT行檢查限制 | |
GIS functionality 地理信息系統支持 | Progress reporting 進度報告 |
目標
第三方工具
如下是支持MariaDB的客戶端工具:
DBEdit 一個免費的MariaDB資料庫和其他資料庫管理應用程式。
Navicat 一系列Windows、Mac OS X、Linux下專有資料庫管理應用程式。
HeidiSQL 一個Windows上自由和開放源碼的MySQL客戶端。它支持MariaDB的5.2.7版本和以後的版本。[5][6]
phpMyAdmin 一個基於網路的MySQL資料庫管理應用程式
兼容性
- 數據和表定義檔案(.frm)檔案是二進制兼容的。
- 所有客戶端APIs,協定和結構都是相同的。
- 所有的檔案名稱、二進制檔案的路徑、連線埠、套接字等等……應該是相同的。
- 所有MySQL的連線器(PHP Python Perl Java .NET MyODBC Ruby MySQL C連線器等) 和MariaDB的不變。
- 有一些和PHP5的安裝問題要注意(一個和老的PHP5如何檢查庫兼容性的bug)。
- 安裝的包名稱,用MariaDB代替MySQL。
- 時間控制可能不同,MariaDB在許多情況下比MySQL快。
- mysqld在MariaDB讀取是my.cnf中[MariaDB ]的部分。
- 如果它不是完全相同的MariaDB編譯版本,不能使用僅提供二進制的存儲引擎庫給MariaDB使用 (這是因為伺服器內部結構THD在MySQL和MariaDB之間不同。這也是與常見的MySQL版本不同的)。這應該不是問題,因為對於大多數人不載入新存儲引擎,MariaDB比MySQL帶有更多的存儲引擎。
- CHECKSUM TABLE可能產生不同的結果,由於MariaDB並不忽視NULL的列,MySQL 5.1忽略(未來的MySQL版本應該計算checksums和MariaDB一樣)。在MariaDB 開啟mysqld –old選項,您可以得到“舊式”的校驗和。但是要注意,這個MyISAM存儲引擎和Aria 存儲引擎在MariaDB實際上在內部使用新的checksum,因此,如果您使用的是—old , CHECKSUM命令將會更慢,因為它需要,一行一行的計算checksum。
- 慢速查詢日誌有更多信息關於查詢, 如果有一個腳本解析慢速查詢日誌這可能是一個問題。
- MariaDB默認情況下比MySQL需要更多的記憶體,因為我們有默認情況下啟用Aria存儲引擎處理內部臨時表。如果需要MariaDB使用很少的記憶體(這是以犧牲性能為代價的),您可以設定aria_pagecache_buffer_size的值為 1M(默認值為128M)。
- 新增SQL_MODE的取值:IGNORE_BAD_TABLE_OPTIONS。如果未設定該值,使用一個表、欄位或索引的屬性(選項)不被支持的存儲引擎將會導致錯誤。這個變化可能引起警告不正確的表定義出現在錯誤日誌中,請利用mysql_upgrade修復這個警告。
- 一些錯誤信息涉及到錯誤轉換的,MariaDB的差別在於訊息中提供了更多的信息關於到底是哪裡出了錯。
- MariaDB專用的錯誤編號已經從1900開始,為的是不與MySQL的錯誤衝突。
- MariaDB在所有工作場景中可以基於微秒計時工作;而MySQL在某些情況下,如datetime和time,確實會丟失微秒部分。
- 舊的--maria啟動選項被刪除。應該使用--aria前綴代替。(MariaDB 5.2都支持這—maria-和- aria-)
- SHOW PROCESSLIST有一個額外的process列,顯示一些命令的進度。您可以啟動mysqld用–old 標誌禁用它。
- INFORMATION_SCHEMA.PROCESSLIST對進度報告有三個新列: STAGE, MAX_STAGE和 PROGRESS。
- 以/*M! 或/*M!#####起頭的長注釋會得到執行。
- 如果使用max_user_connections = 0(也就是說任何數量的連線)啟動mysqld,您就不能在mysqld運行時修改全局變數了。這是因為當mysqld以max_user_connections = 0啟動時,它不分配計數結構(包括每個連線的互斥鎖)。如果稍後改變變數,這將導致錯誤的計數器。如果希望在運行時能改變這個變數,請在啟動時將它設定為一個較高的值。
- 可以設定max_user_connections(包括全局變數和GRANT選項兩種場景)為-1來阻止用戶連線到伺服器。全局變數max_user_connections變數不影響擁有super特權的用戶連線。
- innodb-adaptive-checkpoint;請使用innodb_adaptive_flushing_method 替代。
- innodb-auto-lru-dump;請使用innodb_buffer_pool_restore_at_startup 替代。
- innodb-blocking-lru-restore;請使用innodb-blocking-buffer-pool-restore 替代。
- innodb-enable-unsafe-group-commit
- innodb-expand-import;請使用 innodb_import_table_from_xtrabackup 替代。
- innodb-extra-rsegments;請使用innodb_rollback_segment 替代。
- innodb-extra-undoslots
- innodb-fast-recovery
- innodb-flush-log-at-trx-commit-session
- innodb-overwrite-relay-log-info
- innodb-pass-corrupt-table;請使用innodb_corrupt_table_action 替代。
- innodb-use-purge-thread
- xtradb-enhancements