MySQL等資料庫和大資料誰快?

xuexiaogang發表於2021-12-16

自己原文公眾號:  https://mp.weixin.qq.com/s/wyGjHLP2lSD0WhdJq5j4Ow


很多人都說資料庫處理不了,到大資料中去處理。似乎有一種錯誤的認識,好像大資料很快一樣?今天本文以MySQL為例。Oracle PG更加不用說了。

這個是MySQL的20多萬count一下和查一條。可見全部count0.28秒,找一條更加不在話下應該是1ms的。  


     將這個表用OGG送到HDFS,hadoop的檔案系統,用Hive來試試。HIve本來就是讀磁碟檔案。(其實這種MapReduce而且每次和磁碟互動的方式,而且HDFS還不支援修改。簡直是智障。)

好吧Hive中count一下24秒這裡之所以是50多萬,是因為源庫中update全表。而hive不支援修改,全過來。資料量翻了一倍,時間用了100倍。

查其中一條用了14秒。慢了10000倍。

      那麼為什麼還有大資料系統?主要是hadoop裡面要是用hive去玩基本搞不動,一般都是impala去做的。區別是impala把hive的全部對映到記憶體中(再也沒有智障的IO互動了)。然後全是記憶體在抗,又有多個機器,記憶體就變成可擴充套件的了。代價是N臺強大的機器靠記憶體搞定。

     不過各位看官看看,在百萬級別的單表MySQL也就是秒出。妥妥滿足要求,多表關聯MySQL不擅長。但是Oracle 擅長啊。而且這裡有一個非常重要的環節是無法迴避的。就是從RDBMS(Oracle/MySQL/PostgreSQL/SQLServer/DB2)這些資料庫做的修改和刪除,大資料系統天生無法做到實時,而且對應Update和Delete的處理是非常繁瑣,以至於在我個人看來,有這個時間和精力我不如把OLTP上的東西做做好,將OLTP做成HATP。一般的業務系統這樣做還是做得到的。

     千萬不要以為報表天生就應該慢,我工作過的第二個公司,一天出一個報表一個報表15個小時。開發無法忍受找到我,只求一個小時完成。最後我處理後6秒出報表。所以報表不是就是慢,關係型資料庫不見得慢,hadoop也不見得快(事實上就是慢)。成見是一座大山。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2848077/,如需轉載,請註明出處,否則將追究法律責任。

相關文章