免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
程序員應知應會之MySQL的存儲引擎

對于很多應用系統(tǒng)開發(fā)的程序員們,MySQL是非常熟悉的軟件,但是很多人卻對里面的存儲引擎不是特別了解,只是單純的采用默認的存儲引擎,很少進行修改。今天我們就來看看各類存儲引擎的區(qū)別,以便大家在使用MySQL的時候,知其然,還要知其所以然。

首先我們來看一下什么是存儲引擎。

我們知道關系型數(shù)據(jù)庫的數(shù)據(jù)是存在表里的,可以將表理解為由行和列組成的表格,類似于Excel的電子表格的形式,每個表格就是一個數(shù)據(jù)。但是在存儲數(shù)據(jù)的同時,還要組織數(shù)據(jù)的存儲結構,而這些數(shù)據(jù)的組織結構就是由存儲引擎決定的。就好像同樣是存儲一些數(shù)據(jù)的Excel表,有的時候橫向存儲有的可能縱向存儲,有的以序號排列,有的以字母排序一樣。

現(xiàn)實生活中,由于不同業(yè)務產(chǎn)生了不同的數(shù)據(jù),這些數(shù)據(jù)有的可能偏重于被頻繁查詢,有的要求增刪速度快,有的則對事務、索引、外鍵有特殊規(guī)定。這樣一來,就對存儲數(shù)據(jù)的表要求使用不同的數(shù)據(jù)組織結構,也就是存儲引擎。簡而言之,就是業(yè)務直接決定了存儲引擎。

所以,對于同一個數(shù)據(jù)庫內(nèi)的多個表,可以使用各自符合業(yè)務的存儲引擎,即存儲引擎的使用級別是數(shù)據(jù)表。

通常,我們可以使用Alter table 語句來更改表的存儲引擎,例如以下的命令將表mytable 的存儲引擎改為InnoDB。

mysql> ALTER TABLE mytable ENGINE = InnoDB;

MySQL給開發(fā)者提供了查詢存儲引擎的功能,可以在命令行窗口使用:SHOW ENGINES來查看支持的存儲引擎。

可以看到,這里面查出了9種存儲引擎,支持其中的8種,其中InnoDB為默認存儲引擎。

那么,各種存儲引擎都有什么特點呢?我們來看一下。

MyISAM: 擁有較高的插入,查詢速度,不支持事務,不支持外鍵約束,不支持行級鎖,操作時需要鎖定整張表,不過會保存表的行數(shù),所以當執(zhí)行select count(*) from tablename時執(zhí)行特別快。用于管理非事務表,提供高速檢索及全文檢索能力,適用于有大量的select操作的表,如日志表

InnoDB 5.5版本后Mysql的默認數(shù)據(jù)庫,事務型數(shù)據(jù)庫的首選引擎,支持ACID事務,支持行級鎖定,是事務安全的,提供行級鎖與外鍵約束,有緩沖池,用于緩沖數(shù)據(jù)和索引。適用于事務處理,具有ACID事物支持,應用于執(zhí)行大量的insertupdate操作的表。

Memory :所有數(shù)據(jù)置于內(nèi)存的存儲引擎,擁有極高的插入,更新和查詢效率。每一個memory只實際對應一個磁盤文件。因為是存在內(nèi)存中的,所以memory訪問速度非???,而且該引擎使用hash索引,可以一次定位,不需要像B樹一樣從根節(jié)點查找到支節(jié)點,所以精確查詢時訪問速度特別快,但是非精確查找時,比如like,這種范圍查找,hash就起不到作用了。同時會占用和數(shù)據(jù)量成正比的內(nèi)存空間。另外一旦服務關閉,表中的數(shù)據(jù)就會丟失,因為沒有存到磁盤中。適用于內(nèi)容變化不頻繁的表,或者作為中間的查找表。對表的更新要謹慎因為數(shù)據(jù)沒有被寫入到磁盤中,服務關閉前要考慮好數(shù)據(jù)的存儲。

Merge MERGE存儲引擎把一組MyISAM數(shù)據(jù)表當做一個邏輯單元來對待,讓我們可以同時對他們進行查詢,在超大規(guī)模數(shù)據(jù)存儲時很有用。構成一個MERGE數(shù)據(jù)表結構的各成員MyISAM數(shù)據(jù)表必須具有完全一樣的結構。每一個成員數(shù)據(jù)表的數(shù)據(jù)列必須按照同樣的順序定義同樣的名字和類型,索引也必須按照同樣的順序和同樣的方式定義。

除了便于同時引用多個數(shù)據(jù)表而無需發(fā)出多條查詢,MERGE數(shù)據(jù)表還可以用來創(chuàng)建一個尺寸超過各個MyISAM數(shù)據(jù)表所允許的最大長度邏輯單元。

BDB: 源自Berkeley DB,事務型數(shù)據(jù)庫的另一種選擇,支持COMMITROLLBACK等其他事務特性。

Archive Archive擁有高效的插入速度,但其對查詢的支持相對較差。非常適合存儲大量的獨立的,作為歷史記錄的數(shù)據(jù)。

Federated:將不同的Mysql服務器聯(lián)合起來,邏輯上組成一個完整的數(shù)據(jù)庫。適合分布式應用。

Cluster/NDB :高冗余的存儲引擎,用多臺數(shù)據(jù)機器聯(lián)合提供服務以提高整體性能和安全性。適合數(shù)據(jù)量大,安全和性能要求高的應用

CSV: 邏輯上由逗號分割數(shù)據(jù)的存儲引擎。它會在數(shù)據(jù)庫子目錄里為每個數(shù)據(jù)表創(chuàng)建一個.CSV文件。這是一種普通文本文件,每個數(shù)據(jù)行占用一個文本行。CSV存儲引擎不支持索引。

BlackHole :黑洞引擎,寫入的任何數(shù)據(jù)都會消失,一般用于記錄binlog做復制的中繼。以及坑自己的同事。

performance_schema一個內(nèi)存表引擎,這個存儲引擎用于MySQL自帶的PERFORMANCE_SCHEMA數(shù)據(jù)庫,用于收集數(shù)據(jù)庫服務器性能參數(shù)。用戶自己不能創(chuàng)建存儲引擎為PERFORMANCE_SCHEMA的表。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Mysql不同存儲引擎的表轉換方法
Mysql存儲引擎詳解(MyISAM與InnoDB的區(qū)別)(轉)
收集的MySQL的面試題分享給大家_數(shù)據(jù)庫技術_酷勤網(wǎng)
mysql 的存儲引擎介紹
MySQL: MyISAM or InnoDB?(譯) - Jiangshachina -...
各種存儲引擎的特性
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服