国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MySQL 只能做小項目?松哥要說幾句公道話!

ixlei / 3083人閱讀

摘要:松哥上學那會,很多人對有一些偏見,偏見主要集中在以下幾方面不支持事務事實上有表鎖,但是效率比較低存儲的數據量比較小,適合小項目,大項目還是得上等這么多年過去了,松哥自己在開發中一直是以為主,我覺得我有必要說兩句公道話了。

松哥上學那會,很多人對 MySQL 有一些偏見,偏見主要集中在以下幾方面:

MySQL 不支持事務(事實上 MyISAM 有表鎖,但是效率比較低)

MySQL 存儲的數據量比較小,適合小項目,大項目還是得上 Oracle、DB2 等

這么多年過去了,松哥自己在開發中一直是以 MySQL 為主,我覺得我有必要說兩句公道話了。

公道話 第一個問題

關于第一個不支持事務的問題,這有一定的歷史原因。MySQL 從設計之初,存儲引擎就是可插拔的,允許公司或者個人按照自己的需求定義自己的存儲引擎(當然,普通的公司或者個人其實是沒有這個實力的)。MySQL 自研的使用較廣的存儲引擎是 MyISAM ,MyISAM 支持表鎖,不支持行鎖,所以在處理高并發寫操作時效率要低一些,另外 MyISAM 也不支持外鍵(雖然現在實際項目中外鍵已經用的比較少了)。

但是這個問題并非無解。這就不得不說 MySQL 中另外一個大名鼎鼎的存儲引擎 InnoDB 了。

InnoDB 存儲引擎是由一家位于芬蘭赫爾辛基的名為 Innobase Oy 的公司開發的,InnoDB 存儲引擎的歷史甚至比 MySQL 還要悠久。

InnoDB 剛剛開發的時侯,就是作為一個完整的數據庫來開發的,因此功能很完備。開發出來之后,創始人是想將這個數據庫賣掉的,但是沒有找到買家。

后來 MySQL2.0 推出后,這種可插拔的存儲引擎吸引了 Innobase Oy 公司創始人 Heikki Tuuri 的注意,在和 MySQL 溝通之后,決定將 InnoDB 作為一個存儲引擎引入到 MySQL 中,MySQL 雖然支持 InnoDB ,但是實際上還是主推自家的 MyISAM。

但是 InnoDB 實在太優秀了,最終在 2006 年的時侯,成功吸引到大魔王 Oracle 的注意,大手一揮,就把 InnoDB 收購了。

MySQL 主推自家的 MyISAM ,日子過得也很慘淡,最終在 2008 年被 sun 公司以 10 億美元拿下,這個操作鞏固了 sun 在開源領域的領袖的地位,可是一直以來 sun 公司的變現能力都比較弱,最終 sun 自己在 2009 年被 Oracle 收入囊中。那會松哥還在讀高中,某一天吃午飯的時侯,餐廳的電視機上播放央視的午間新聞,看到了這條消息,現在還有一些印象。

Oracle 收購 sun 之后,InnoDB 和 MySQL 就都成了 Oracle 的產品了,這下整合就變得非常容易了,在后來發布的版本中,InnoDB 慢慢就成為了 MySQL 的默認存儲引擎。在最新的 MySQL8 中,元數據表也使用了 InnoDB 作為存儲引擎。

InnoDB 存儲引擎主要有如下特點:

支持事務

支持 4 個級別的事務隔離

支持多版本讀

支持行級鎖

讀寫阻塞與事務隔離級別相關

支持緩存,既能緩存索引,也能緩存數據

整個表和主鍵以 Cluster 方式存儲,組成一顆平衡樹

...

當然也不是說 InnoDB 一定就是好的,在實際開發中,還是要根據具體的場景來選擇到底是使用 InnoDB 還是 MyISAM 。

所以第一個問題不攻自破。

第二個問題

第二個問題確實是一個硬傷。

你要是拿 MySQL 和 Oracle 比,肯定是要差一點點感覺。畢竟一個免費一個收費,而且收費的還很貴。但是這個問題并非無解。

相信很多小伙伴都聽過國內很多大廠都使用了 MySQL 來存儲數據。大廠用 MySQL ,是因為他們有能力研發出自己的存儲引擎,小廠一般沒有這個實力,沒法去研發出自己的存儲引擎,但是 Oracle 又用不起,那么怎么辦呢?

這幾年興起的分布式數據庫中間件剛好可以很好的解決這個問題。Java 領域,類似的工具很多,例如 Sharding-JDBC 、MyCat 等,通過這些工具,可以很好的實現數據庫分庫分表,以及數據表的動態擴展、讀寫分離、分布式事務解決等。有了這些工具,極大的提高了 MySQL 的應用場景。

另一方面,近些年流行微服務,這不是單純的炒概念,微服務架構將一個大的項目拆分成很多個小的微服務,各個微服務處理自己很小的一部分事情,這更符合人類分工協作的特點。在微服務架構中,我們對大表的需求、對多表聯合查詢的需求都會有所降低,MySQL 也更具用武之地。

因此,第二個問題也是可以解決的。

據松哥了解,互聯網公司使用 MySQL 還是比較多的,傳統軟件公司,可能會更青睞 Oracle 等數據庫。

不過話說回來,云計算,也是未來一個方向。

結語

為什么要寫這篇文章呢?因為松哥打算出幾篇文章給大家介紹一下分布式數據庫中間件 MyCat 和 Sharding-JDBC 的用法,有了這些分布式數據庫中間件,就可以讓你的 MySQL 真正具備可以媲美大型數據庫的能力。本文算是一個引子吧。

后面松哥就先更新 MyCat 。

關注公眾號【江南一點雨】,專注于 Spring Boot+微服務以及前后端分離等全棧技術,定期視頻教程分享,關注后回復 Java ,領取松哥為你精心準備的 Java 干貨!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77863.html

相關文章

  • What?Tomcat-竟然也算中間件?

    摘要:引入中間件之后,我們的應用程序將只需要連接就行了,再由去操作各種不同的,各個分布式數據庫的排序結果集合并數據過濾等操作都在中完成,這樣我們的應用又可以專注于業務的開發了,那些繁瑣的重復的操作,又交給去完成。 關于 MyCat 的鋪墊文章已經寫了兩篇了: MySQL 只能做小項目?松哥要說幾句公道話! 北冥有 Data,其名為鯤,鯤之大,一個 MySQL 放不下! 今天是最后一次鋪墊...

    xavier 評論0 收藏0
  • JavaWeb 亂碼問題終極解決方案!

    摘要:經常有讀者在公眾號上問亂碼的問題,昨天又有一個小伙伴問及此事,其實這個問題很簡單,但是想要說清楚卻并不容易,因為每個人亂碼的原因都不一樣,給每位小伙伴都把亂碼的原因講一遍也挺費時間的,因此,松哥今天決定寫一篇文章,和大伙好好捋捋中的亂碼問題 經常有讀者在公眾號上問 JavaWeb 亂碼的問題,昨天又有一個小伙伴問及此事,其實這個問題很簡單,但是想要說清楚卻并不容易,因為每個人亂碼的原因...

    canger 評論0 收藏0

發表評論

0條評論

ixlei

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<