亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Mysql存儲引擎

發布時間:2021-07-05 18:01:07 來源:億速云 閱讀:158 作者:chen 欄目:大數據

這篇文章主要介紹“什么是Mysql存儲引擎”,在日常操作中,相信很多人在什么是Mysql存儲引擎問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是Mysql存儲引擎”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

InnoDB存儲引擎

InnoDB是MySQL的默認事務型引擎,也是最重要、使用最廣泛的存儲引擎,它被設計用來處理大量的短期事務,InnoDB的性能和自動崩潰恢復特性,使得它在非事務存儲的需求中也很流行。除非有非常特別的原因使用其它的存儲引擎,否則應該優先考慮InnoDB引擎。InnoDB采用MVCC來支持高并發,并且實現了四個標準的隔離級別。InnoDB基于聚簇索引建立。并且內部做了很多優化,包括從磁盤讀取數據時采用的可預測性預讀,能夠在內存中創建hash索引以加速讀操作的自適應哈希索引,以及能夠加速插入操作的插入緩沖區等。

MyISAM存儲引擎

MySQL 5.1及之前的版本默認的存儲引擎。提供了大量的特性,包括全文索引、壓縮、空間函數等,但是不支持事務和行級鎖,而且有一個毫無疑問的缺陷就是崩潰后無法安全恢復。對于只讀的數據,或者表比較小,可以忍受修復repair操作,則依然可以繼續使用MyISAM。主要特性有:加鎖與并發整張表加鎖而不是針對行(造成性能問題),讀取時會對需要讀到的所有表加共享鎖,寫入時則對表加排它鎖,但是在表有讀取查詢的同時,也可以往表中插入新的記錄(稱為并發插入);修復,可以手動或者自動執行檢查和修復操作,但會導致一些數據丟失,而且修復操作是非常慢的。(check table mytable,repair table mytable);支持前綴索引和全文索引,后者基于分詞創建,可以支持復雜的查詢;延遲更新索引建,指定DELAY_KEY_WRITE選項,在每次修改執行完成后,不會立即將修改的索引數據寫入磁盤,而是會寫到內存中的鍵緩沖區,只有在清理鍵緩沖區或者關閉表的時候才會將對應的索引塊寫入磁盤。這種方式可以極大提升寫入性能,但是在數據庫或者主機崩潰時會造成索引損壞,需要執行修復操作;支持壓縮表,但壓縮后不可修改(除非解除壓縮、修改數據然后再次壓縮),有利于減少磁盤空間占用,減少磁盤I/O提升查詢性能。

其它存儲引擎

Memory引擎

所有數據保存在內存中,不需要進行磁盤IO,至少比MyISAM表一個數量級,適合快速訪問數據,并且這些數據不會被修改,重啟會丟失。適合查找或者映射表,緩存周期性聚合數據或者保存數據分析產生的中間數據等場景。

與臨時表不同,臨時表指使用create temporary table語句創建的表,它可以使用任何存儲引擎,臨時表只在單個連接中可見,當連接斷開臨時表也將不復存在。

Archive引擎

只支持insert和select操作,會緩存所有的寫并利用zlib對插入的行進行壓縮,所以比MyISAM的表I/O更少。適合日志和數據采集類應用,是一個針對高速插入和壓縮做了優化的簡單引擎。

如何選擇合適的引擎

大部分情況下,InnoDB都是正確的選擇,也是默認的存儲引擎。除非需要用到某些InnoDB不具備的特性,并且沒有其它辦法可以替代,否則都應該優先選擇InnoDB引擎。

事務

如果需要事務支持,那么InnoDB是目前最穩點并且經過驗證的選擇。

備份

如果需要在線熱備份,那么選擇InnoDB就是最基本的要求,如果可以定期地關閉服務器來執行備份,那么備份的因素則可以忽略。

崩潰恢復

數據量比較大的時候,系統崩潰后如何快速地恢復是一個需要考慮的問題。相對而言,MyISAM崩潰后發生損壞的概率比InnoDB要高很多,而且恢復速度也慢。

特有特性

比如只有MyISAM支持地理空間搜索,InnoDB支持聚簇索引等。

應用舉例

日志型應用

這類應用對插入速度有很高的要求,數據庫不能成為瓶頸,MyISAM或者Archive存儲引擎對這類應用比較合適,因為開銷低,而且插入速度非常快。如果需要對記錄的日志做分析報表,生成報表的sql可能導致插入效率明顯降低,如何解決?一、利用MySQL內置的復制方案將數據復制一份到備庫,然后在備庫上執行比消耗時間和CPU的查詢,主庫用于高效的插入工作。二、表分時間段存儲,對歷史表的頻繁查詢操作不會干擾到最新當前表上的插入操作。

只讀表或者大部分情況下只讀的表

讀多寫少的場景,如果不介意MyISAM的崩潰恢復問題,那么MyISAM是合適的,MyISAM只會將數據寫入到內存中,然后等待操作系統定期將數據刷出到磁盤上。

不要輕信“MyISAM比InnoDB快”之類的經驗之談,這個結論不是絕對的,在很多已知的場景中,InnoDB的速度都可以讓MyISAM望塵莫及,尤其是使用到聚簇索引,后者需要訪問的數據都可以放入內存的應用。當設計上述類型的應用時,建議采用InnoDB。MyISAM隨著應用壓力的上升,則可能迅速惡化,各種鎖爭用、崩潰后的數據丟失等問題都會隨之而來。

訂單處理

事務支持是必要選項,同時考慮外鍵支持情況,InnoDB是訂單處理類應用的最佳選擇。

到此,關于“什么是Mysql存儲引擎”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青阳县| 柘城县| 霍山县| 防城港市| 会理县| 和顺县| 什邡市| 佛山市| 闽清县| 白银市| 崇信县| 莒南县| 滦南县| 临沂市| 类乌齐县| 桂林市| 平陆县| 沾化县| 山丹县| 三河市| 宁远县| 麟游县| 塘沽区| 嵊泗县| 内乡县| 湛江市| 邓州市| 临朐县| 大余县| 南漳县| 高平市| 瑞丽市| 澄江县| 遂平县| 集安市| 辽中县| 若羌县| 雷山县| 绥滨县| 延川县| 鞍山市|