{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

Mysql數(shù)據(jù)庫引擎該如何選擇?

J4ck_ChanJ4ck_Chan 回答0 收藏1
收藏問題

2條回答

Miyang

Miyang

回答于2022-06-28 14:20

Mysql作為一款關(guān)系型數(shù)據(jù)庫,其中優(yōu)勢之一,便是支持存儲引擎可插拔。你可以結(jié)合具體的使用場景,來選擇特定的存儲引擎。比如你可以選擇InnoDB或者MyISAM存儲引擎。同時由于Mysql是一款開源數(shù)據(jù)庫,你也可以根據(jù)Mysql自定義的預(yù)留存儲引擎接口,自己開發(fā)實現(xiàn)新的存儲引擎。

Mysql中,不同的存儲引擎,都有各自的特點。Mysql數(shù)據(jù)庫存儲包括:InnoDB存儲引擎、MyISAM存儲引擎、NDB存儲引擎、Memory存儲引擎、Archive存儲引擎等。

01

如果需要支持在線事務(wù)處理場景,請選擇InnoDB存儲引擎

InnoDB存儲引擎最大的特點,便是支持事務(wù),行鎖的設(shè)計,同時支持外鍵和MVCC。數(shù)據(jù)庫中的事務(wù)表示一段最小可執(zhí)行SQL邏輯。事務(wù)可以包含多個SQL語句,也可以是一個SQL語句組成。

事務(wù)執(zhí)行中,要么全部執(zhí)行成功,要么全部執(zhí)行失敗。事務(wù)的四個特性:原子性(事務(wù)是最小執(zhí)行單位)、一致性(數(shù)據(jù)狀態(tài)總是從一個一致性狀態(tài)到另外一個一致性狀態(tài))、隔離性(事務(wù)之間是隔離的)、持久性。數(shù)據(jù)庫事務(wù)經(jīng)常會用在金融領(lǐng)域的場景,比如轉(zhuǎn)賬等。

所以,如果你的業(yè)務(wù)場景需要支持事務(wù)特性,那么你在使用Mysql時,需要選擇InnoDB存儲引擎來支持。InnoDB存儲引擎目前在很多公司也用的比較廣泛,比如Facebook、ucloud等。

02

如果需要支持聯(lián)機分析場景,請選擇MyISAM存儲引擎

MyISAM存儲引擎不支持事務(wù),它的最大的一個特點便是支持OLAP(聯(lián)機分析場景)。公司業(yè)務(wù)方經(jīng)常會有這樣的需求,需要對數(shù)據(jù)進行聚合操作,比如對數(shù)據(jù)進行SUM(求和)、COUNT(計數(shù))等指標(biāo)類計算,對這部分數(shù)據(jù)分析,進一步分析數(shù)據(jù)的價值,為公司上層提供決策支持。此時Mysql數(shù)據(jù)庫可以選擇MyISAM存儲引擎來支持。

03

如果可以將數(shù)據(jù)臨時放到內(nèi)存,希望訪問數(shù)據(jù)速度快,可以選擇Memory存儲引擎。如果需要對數(shù)據(jù)進行歸檔,請選擇Archive存儲引擎

Memory存儲引擎會將數(shù)據(jù)存儲到內(nèi)存中,對于內(nèi)存數(shù)據(jù)的訪問,其速度很快。當(dāng)然有一個問題,如果我們的數(shù)據(jù)庫發(fā)生故障或者奔潰重啟時,內(nèi)存中的數(shù)據(jù)會全部消失。

所以對于Memory存儲引擎,它適用的場景用于存儲臨時數(shù)據(jù)的臨時表以及數(shù)據(jù)維表到內(nèi)存中,也可以使用Memory存儲引擎來存儲SQL查詢中的臨時結(jié)果表。

對于Archive存儲引擎,它非常適用于存儲歸檔的數(shù)據(jù),比如存儲日志信息,這部分數(shù)據(jù)沒有那么重要,對其進行壓縮進一步降低磁盤的存儲空間。

我是Lake,專注大數(shù)據(jù)技術(shù)原理、人工智能、數(shù)據(jù)庫技術(shù)、程序員經(jīng)驗分享,如果我的問答對你有幫助的話,希望你能點贊關(guān)注我,感謝。

我會持續(xù)大數(shù)據(jù)、數(shù)據(jù)庫方面的內(nèi)容,如果你有任何問題,也歡迎關(guān)注私信我,我會認真解答每一個問題。期待您的關(guān)注

評論0 贊同0
  •  加載中...
crossoverJie

crossoverJie

回答于2022-06-28 14:20

MySQL 是一個常見的開源免費多引擎的關(guān)系型數(shù)據(jù)庫,各種適配器齊全,我們很容易就可以在項目中使用它。常見存儲引擎有 InnoDB,MyISAM,MRG_MYISAM,BLACKHOLE ,MEMORY,PERFORMANCE_SCHEMA,ARCHIVE,CSV,,F(xiàn)EDERATED 等。

在 MySQL 5.5 版本之前中默認是 MyISAM 引擎,但到了 5.5+ 版本就默認使用 InnoDB 引擎,支持的引擎如下:

  • MySQL 5.5.62:

  • MySQL 5.6.24:

  • MySQL 5.7.27:

  • MySQL 8.0.17:

首先,就是要對這些存儲引擎有一定的了解,才能在實際使用過程中針對性的選擇最佳的引擎方案,最常用的引擎就是 InnoDB 和 MyISAM 兩種,我們可以從是否支持行級鎖,是否支持事務(wù)、是否支持外鍵,是否支持 MVCC,是否支持安全恢復(fù)、性能等角度去對比并結(jié)合項目的實際需求,選擇最合適的存儲方案。

  1. InnoDB 支持原子性、一致性、隔離性、持久性的事務(wù)處理特性、同時支持外鍵,支持行級鎖(row-level locking)和表級鎖(table-level locking),默認是行級鎖。而 MyISAM 只支持表級鎖,不支持事務(wù)和外鍵。

  2. MyISAM 查詢性能比較好,提供全文索引、壓縮、空間函數(shù)等,但是InnoDB 提供事務(wù)支持事務(wù),外部鍵等高級數(shù)據(jù)庫功能。 具有事務(wù)(commit)、回滾(rollback)和崩潰修復(fù)能力(crash recovery capabilities)的事務(wù)安全(transaction-safe (ACID compliant))型表。

  3. 僅 InnoDB 支持 MVCC。應(yīng)對高并發(fā)事務(wù), MVCC 比單純的加鎖更高效; MVCC 只在 READ COMMITIED 和 REPERATABLE READ 兩個隔離級別下工作,MVCC 可以使用 樂觀(optimistic)鎖和悲觀(pessimistic)鎖來實現(xiàn),各數(shù)據(jù)庫中MVCC實現(xiàn)并不統(tǒng)一。

在了解 MySQL 各類存儲引擎的特點后,我相信你在選擇何種方案應(yīng)該就很好決定了。
評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<