微吼云上線多路互動直播服務(wù) 加速多場景互動直播落地
703
2025-03-31
Mysql存儲引擎簡介
存儲引擎的概念是MySQL 的特點(diǎn),而且是一種插入式的存儲引擎概念。這決定了MySql數(shù)據(jù)庫中的表可以用不同的方式存倍。用戶可以根據(jù)自己的需求,選擇不同的存儲方式、是否進(jìn)行駛?cè)胩幚淼取?/p>
使用SHOW ENGINES 語句杳看系統(tǒng)所支持的引擎類型
結(jié)果中主要參數(shù)介紹如下。
Engine參數(shù):指存儲引擎的名稱。
Support參數(shù):說明MySQL是否支持該類引擎。
Comment參數(shù):指對該引擎的評論。
Transactions參數(shù):表示是否支持事務(wù)處理,YES表示可以使用,NO表示不能使用。
XA參數(shù):表示是否分布式交易處理的XA規(guī)范,YES表示支持。
Savepoints參數(shù):表示是否支持保存點(diǎn),以便事務(wù)回滾到保存點(diǎn),YES 表示支持。
由查詢結(jié)果可以得出,MySQ1支持的存儲引擎有 InnoDB、MRG_MYISAM、MEMORY,PERFORMANCE SCHEMA、ARCHIVE、FEDERATED、CSV、BLACKHOLE、MyISAM,其中 InnoDB為默認(rèn)存儲引擎,該引擎的Support參數(shù)值為DEFAULT。
InnoDB存儲引擎
InnoDB是 MySOL 數(shù)據(jù)庫的一種存儲引擎,InnoDB給MySQL 數(shù)據(jù)表提供了事務(wù)、回歸.崩潰修復(fù)能力和多版本并發(fā)控制的事務(wù)安全,支持行鎖定和外鍵等。MySQL的默認(rèn)存儲引擎為InnoDB.InnoDB的主要特性如下:
(1)InnoDB給 MySOL 提供了具有提交,回滾和崩潰恢復(fù)能力的事務(wù)安全(ACID兼容)存儲引擎。InnoDB鎖定在行級并且也在SELECT 語句提供一個類似Oracle的非鎖定讀。這些功能增加了多用戶部署和性能。在SOL查詢中,可以自由地將InnoDB類型的表與其他MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。
(2)InnoDB是為處理巨大數(shù)據(jù)量時的最大性能設(shè)計(jì)。它的CPU 效率可能是任何其他基于磁盤的關(guān)系數(shù)據(jù)庫引擎所不能匹敵的。
(3) InnoDB支持外鍵完整性約束(FOREIGN KEY)。存儲表中的數(shù)據(jù)時,每張表的存儲都按主鍵順序存放,如果沒有顯式的在表定義時指定主鍵,InnoDB 會為每一行生成一個6字節(jié)的ROWID,并以此作為主鍵。
(4)InnoDB被用在眾多需要高性能的大型數(shù)據(jù)庫站點(diǎn)上。InnoDB 不創(chuàng)建目錄,使用 InnoDB時,MySQL將在MySQL數(shù)據(jù)目錄下創(chuàng)建一個名為 ibdatal的10MB 大小的自動擴(kuò)展數(shù)據(jù)文件,以及兩個名為ib_logfile0和ib_logfile1的5MB大小的日志文件。
MyISAM存儲引擎
MyISAM存儲引擎是 MySQL中常見的存儲引擎,曾是MySQL 的默認(rèn)存儲引擎,MyISAM存儲引擎是基于ISAM存儲引擎發(fā)展起來的,而且增加了很多有用的擴(kuò)展,如擁有較高的插入、查詢速度等,但是它不支持事務(wù),主要特性如下:
(1)大文件(達(dá)63位文件長度)在支持大文件的文件系統(tǒng)和操作系統(tǒng)上被支持。
(2)當(dāng)把刪除和更新及插入混合的時候,動態(tài)尺寸的行更少碎片。這要通過合并相鄰被刪除的塊,以及若下一個塊被刪除,就擴(kuò)展到下一塊來自動完成。
(3)每個 MyISAM 表的最大索引數(shù)是64。這可以通過重新編譯來改變。每個索引最大的列數(shù)是16。
(4)最大的鍵長度是1000字節(jié)。這也可以通過編譯來改變。對于鍵長度超過250字節(jié)的情況,使用一個超過1024字節(jié)的鍵塊。
(5) BLOB和 TEXT列可以被索引。
(6)NULL值被允許在索引的列中。
(7)所有數(shù)字鍵值以高字節(jié)位先被存儲以允許一個更高的索引壓縮。
(8)每表一個AUTO INCREMENT 列的內(nèi)部處理。MyISAM 為 INSERT 和 UPDATE操作自動更新這一列。這使得 AUTO INCREMENT 列更快(至少10%)。在序列頂?shù)闹当粍h除之后就不能再利用。
(9)可以把數(shù)據(jù)文件和索引文件放在不同目錄。
(10)每個字符列可以有不同的字符集。
(11)有VARCHAR的表可以有固定或動態(tài)記錄長度。
(12)VARCHAR 和 CHAR 列可以多達(dá)64KB。
使用MyISAM引擎創(chuàng)建數(shù)據(jù)庫,將產(chǎn)生3個文件。文件的名字以表的名字開始,擴(kuò)展名指
索引文件的擴(kuò)展名出文件類型:frm文件存儲表定義,數(shù)據(jù)文件的擴(kuò)展名為.MYD (MYData)
MEMORY存儲引擎
MEMORY存儲引擎是 MySQL中的一類特殊的存儲引擎,其使用存儲在內(nèi)存中的內(nèi)容來創(chuàng)建,而且所有數(shù)據(jù)也放在內(nèi)存中,這些特性都與 InnoDB存儲引擎、MyISAM 存儲引擎不同。MEMORY的主要特性如下:
(1)MEMORY表可以有多達(dá)每個表32個索引,每個索引16列,以及500字節(jié)的最大鍵長度。
(2)MEMORY 存儲引擎執(zhí)行HASH和 BTREE索引。(3)可以在一個MEMORY 表中有非唯一鍵。
(4)MEMORY 表使用一個固定的記錄長度格式。(5)MEMORY 不支持BLOB或TEXT列。
(6) MEMORY 支持AUTO INCREMENT 列和對可包含NULL值的列的索引。(7) MEMORY 表在所有客戶端之間共享(就像其他任何非TEMPORARY 表)。
(8) MEMORY 表內(nèi)容被存在內(nèi)存中,內(nèi)存是 MEMORY 表和服務(wù)器在查詢處理之時的空閑中創(chuàng)建的內(nèi)部表共享。
(9)當(dāng)不再需要 MEMORY 表的內(nèi)容之時,要釋放被MEMORY表使用的內(nèi)存,應(yīng)該執(zhí)行DELETE FROM或 TRUNCATE TABLE,或者整個地刪除表(使用 DROP TABLE)。
存儲引擎的選擇
不同存儲引擎都有各自的特點(diǎn),適用于不同的需求,為了做出選擇,首先需要考慮每一個存儲引擎提供了哪些不同的功能。
InnoDB存儲引擎:如果要提供提交、回滾和崩潰恢復(fù)能力的事務(wù)安全(ACID兼容)能力,并要求實(shí)現(xiàn)并發(fā)控制,InnoDB存儲引擎是很好的選擇。
MyISAM存儲引擎:如果數(shù)據(jù)表主要用來插入和查詢記錄,則 MyISAM引擎能提供較高的處理效率,因此MyISAM存儲引擎是首選。
MEMORY 存儲引擎:如果只是臨時存放數(shù)據(jù),數(shù)據(jù)量不大,并且不需要較高的數(shù)據(jù)安全性,可以選擇將數(shù)據(jù)保存在內(nèi)存中的MEMORY引擎,MySQL 中使用 MEMORY存儲引擎作為臨時表存放查詢的中間結(jié)果。
ARCHIVE存儲引擎:如果只有INSERT和 SELECT操作,可以選擇ARCHIVE引擎,ARCHIVE
存儲引擎支持高并發(fā)的插入操作但具大自社不具事冬守全的。ARCHIVE 存儲引擎非常適合存儲歸檔數(shù)據(jù),如記錄日志信息可以使用ARCHIVE引擎。
總之,使用哪一種引擎要根據(jù)需要靈活選擇,一個數(shù)據(jù)庫中的多個表可以使用不同的引擎以滿足各種性能和實(shí)際需求,使用合適的存儲引擎,將會對整個數(shù)據(jù)庫的性能有幫助。
面對以上種種業(yè)務(wù)需求,華為云提供了針對性的解決方案,從兩條路出發(fā),實(shí)時保障游戲的平穩(wěn)運(yùn)行。
數(shù)據(jù)庫
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。