新聞中心
MariaDB Server 是最流行的開源關(guān)系型數(shù)據(jù)庫之一。它由 MySQL 的原始開發(fā)者制作,并保證保持開源。它是大多數(shù)云產(chǎn)品的一部分,也是大多數(shù)Linux發(fā)行版的默認(rèn)配置。MariaDB 被設(shè)計為 MySQL 的直接替代產(chǎn)品,具有更多功能,新的存儲引擎,更少的錯誤和更好的性能。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的冠縣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
數(shù)據(jù)庫及關(guān)系型數(shù)據(jù)庫
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,而mysql、oracle、mariadb等都是數(shù)據(jù)庫管理軟件(DBMS),是管理數(shù)據(jù)庫用的。
關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫是一個數(shù)據(jù)集合,數(shù)據(jù)存儲在相應(yīng)的數(shù)據(jù)表中,而“關(guān)系”就是指各個表之間的關(guān)聯(lián)。表的每一行代表一條記錄,每一列代表一個字段,或稱為數(shù)據(jù)的屬性亦可,這種存儲方式也是最貼合我們的實際生活,例如下圖這張表,從我們上學(xué)開始便經(jīng)常見到。
SQL語言
結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),同時也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。
結(jié)構(gòu)化查詢語言主要包含3個部分:一:數(shù)據(jù)查詢語言(DQL:Data Query Language):也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。關(guān)鍵字:SELECT、WHERE、ORDER BY、GROUP BY、HAVING二:數(shù)據(jù)操作語言(DML:Data Manipulation Language):主要用于添加,修改和刪除表中的行。關(guān)鍵字:INSERT、UPDATE、DELETE三:數(shù)據(jù)定義語言(DDL):主要用于在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREAT TABLE 或 DROP TABLE),為表加入索引等。關(guān)鍵字:CREATE、DROP
簡介
MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個分支,主要由開源社區(qū)在維護(hù),采用GPL授權(quán)許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB。以上內(nèi)容抄自百度百科,寫本文時的mariadb10.3已經(jīng)切換為Innodb為默認(rèn)存儲引擎了,其實XtraDB和InnoDB是一回事,可以看作是InnoDB的社區(qū)版。
Mariadb邏輯架構(gòu)
當(dāng)Mariadb接受到Sql語句時,其詳細(xì)的執(zhí)行過程如下:1 當(dāng)客戶端連接到 mariadb 的時候,會認(rèn)證客戶端的主機(jī)名,用戶,密碼,認(rèn)證功能可以做成插件。2 如果登錄成功,客戶端發(fā)送 sql 命令到服務(wù)端3 由解析器解析 sql 語句4 服務(wù)端檢查客戶端是否有權(quán)限去獲取它想要的資源5 如果查詢已經(jīng)存儲在 query cache 當(dāng)中,那么結(jié)果立即返回6 優(yōu)化器將會找出最快的執(zhí)行策略,或者是執(zhí)行計劃,也就是說優(yōu)化器可以決定什么表將會被讀,以及哪些索引會被訪問,哪些臨時表會被使用,一個好的策略能夠減少大量的磁盤訪問和排序操作等。7 存儲引擎讀寫數(shù)據(jù)和索引文件,cache 用來加速這些操作,其他的諸如事物和外鍵特性,都是在存儲引擎層處理的。
實例
MySQL(Mariadb)是單進(jìn)程多線程,也就是說,每一個Mysql實例在系統(tǒng)上就是一個服務(wù)進(jìn)程,一個實例可以擁有不同的配置文件、端口,管理不同的數(shù)據(jù)庫等,Mariadb 實例其實就是個 mysqld 文件,在Linux 上,可以直接運行,但是一般都是由mysqld_safe 腳本來調(diào)用,mysqld_safe 腳本既可以啟動實例,又可以重啟意外終端的實例,在生產(chǎn)環(huán)境中比 mysqld 更安全。
存儲引擎
存儲引擎在物理層管控數(shù)據(jù),它負(fù)責(zé)數(shù)據(jù)文件、數(shù)據(jù)、索引、cache等的管理,這使得管理和讀取數(shù)據(jù)變得更高效,每一張表,都有一個.frm 文件,這些文件包含著表的定義。使用 “show engines” 命令或者通過查詢 information_schema.engines 表可以查看存儲引擎相關(guān)變量,如下圖:每一個存儲引擎管理、存儲數(shù)據(jù)的方式都是不同的,所支持的特性和性能也不盡相同,例如:MyISAM,適合讀多寫少的環(huán)境,且不支持事務(wù),支持全文索引等InoDB,支持事務(wù),支持行鎖和外鍵等MEMORY,將數(shù)據(jù)存儲在內(nèi)存當(dāng)中CSV,將數(shù)據(jù)存儲為CSV格式等等等,所以,選擇合適的數(shù)據(jù)引擎尤為重要。
查看當(dāng)前默認(rèn)是什么存儲引擎:SELECT @@global.storage_engine;
mysql命令行技巧
解決輸出過長
\G 標(biāo)識符的使用,將每一行記錄當(dāng)作一頁輸出,如下圖:
\P 標(biāo)識符設(shè)定pager,常用的pager有l(wèi)ess、more、grep、md5sum等,說白了就是使用管道將標(biāo)準(zhǔn)輸出(STO)輸出到Pager中去。
本文標(biāo)題:詳解MariaDB架構(gòu)
轉(zhuǎn)載來于:http://m.fisionsoft.com.cn/article/djgpehp.html


咨詢
建站咨詢
