SQL Server 相比 MySQL 有何優勢?
我在兩種資料庫都有多年從業經驗,自認為比較有資格回答。
其實兩種產品並不是一樣的類型,mysql是單純的資料庫存儲,mssql是一整套數據解決方案。如果有興趣可以去了解一下microsoft sql server business intelligence和data mining相關的產品,以及data cube,高斯分布計算等各種features,你就會改變觀念了。mysql是互聯網公司廣泛使用的,免費的(最重要),容易使用的存儲方案,標準做法是單純的業務crud,核心任務是扛住qps和tps,沒有存儲過程,擴展函數等邏輯(從安全,性能,邏輯控制考慮)。
回到你的問題,如果要比較,那就得把sql server降級到這個角色來。單純的crud情況下,同樣的配置,它的優勢有:
1. 更好的讀寫性能,因為和windows framework綁定一起,底層操作系統級優勢。而mysql則有可能oom,被linux無差別清理掉
2. 數據可靠性更好:數據安全,一致性等
3. 存儲過程。oracle和mssql都有強大的存儲過程,銀行系統甚至有規定凡是和資金相關的邏輯必須寫在存儲過程里,禁止寫在應用程序里。而mysql的存儲過程則一直是雞肋。用c語言寫的擴展存儲過程,即運行在資料庫內存中的程序代碼,兩個都支持,這個不在討論範圍之內
4. 方便的性能監控。打開profiler,可以在生產環境中實時看各個query的執行詳情,還可以按需過濾,而且不影響系統性能
5. 方便的sql debug。這個主要用於函數和存儲過程,可以設斷點,單步,跳步等執行,就像程序debug一樣。mysql沒有ide能這樣做,調試存儲過程比較困難
6. 說到ide了,當然是出品過vs這種神器的微軟的天下了,mssql management studio各種好用,查詢管理都很方便
7. 可靠的資料庫複製。做過mysql dba的應該都有體會,主要的折騰工作就是db replication,敲得最多的就是show slave status… mssql有data mirror,log shipping等多種複製方式,且都很可靠。至少我那麼多年沒處理過主備數據不一致的修補工作。mysql主備讀寫分離曾經是mysql一個優勢,以前的mssql mirror備庫不可讀。但現在的版本已經可讀了,所以不存在這個缺陷了
其實還有很多,但那樣的話回答就成長篇大論了。總之選擇什麼資料庫並不是程序員或dba來決定的,而且行業和成本。難以想像杭州或北京一個互聯網startup會購買昂貴的資料庫licence,即便是雲計算資料庫準確來說應該是Microsoft SQL Server相比MySQL有何優勢。
Microsoft SQL Server是一整套數據解決方案,包括了資料庫存儲、資料庫高可用、智能分析、大數據平台集成、數據挖掘等完整的數據解決方案。此外,Microsoft SQL Server還有很多合作夥伴,可以再此基礎上再做一層增值的集成解決方案提供。因此,如果只把Microsoft SQL Server、Oracle看成是一個資料庫就有些太過簡單。當然,他們最終都依賴底層的資料庫服務來支撐。
從微軟的財報來看,Microsoft SQL Server每季度能帶來接近4億美金的收入,而這還是2012年Q3的統計數字:
Server and Tools revenue increased in both product sales and Enterprise Services. Product revenue increased $396 million or 12%, driven primarily by growth in SQL Server, Windows Server, and System Center, reflecting continued adoption of Windows platform applications. Enterprise Services revenue grew in both Premier product support and consulting services.
這收入肯定是MySQL資料庫所無法比擬的。因此至少在目前,Microsoft SQL Server在開發、質量把控、功能、文檔等各方面是要比MySQL資料庫強一些的。在企業市場上,至少在國外,Micosoft SQL Server佔用率是非常高的。澳洲的資料庫工作市場我比較清楚,可以說MySQL DBA工作就業機會非常少,而對應的Microsoft SQL Server DBA不管從就業機會、薪資收入來說,都是非常不錯的。
MySQL是開源的資料庫,這點與Microsoft SQL Server是非常不同的。MySQL可能或許就是一個資料庫產品,而不是一個整體的解決方案。但開源產品有開源產品的優勢,比如免費、代碼自主可控。但對外銷售時,客戶可能會擔心售後、技術支持等一系列問題,那麼這時可以通過購買企業版來解決相關問題。但是隨著開源的不斷產品,其實可以看到越來越多的企業開始大量使用開源資料庫產品,並具備一定的自主可控能力。
國內互聯網公司本身擁有非常多技術專家,擁有解決內核級問題的能力。結合互聯網業務的特點,基本都使用MySQL作為後端的資料庫存儲。另外,國內互聯網公司的薪資更具誘惑力,所以國內就業來看,Microsoft SQL Server的前(錢)景並不如MySQL。
我個人不太同意@ Chen Dale 同學的說法,未來即使是世界500強公司們,他們的業務也會逐步互聯網化。未來在這種大規模數據與高並發場景下,是否Microsoft SQL Server依然堅挺,還很難說,作為我本人來說持有保留意見。但不管怎麼說,作為IT技術人員,至少3~5年的趨勢預判能力。當然,每個人的預判結果會不一樣。
怎麼說呢,資料庫這種東西,貴的東西就是好,如果SQL SERVER和WINDOWS SERVER開源,我才不用MYSQL。
這個問題很傻,就好像在問喬丹比林丹籃球厲害在哪裡一樣。雖然mysql絕大多互聯網企業在用,但兩者真不是一個等級的。好比一個是陸地之王,一個是海陸空三位一體。你如果有一項業務,要快速的架構一套系統,不只前端業務需要,還要有後端的數據分析用於商務決策,出了問題還需要快速安全的得到專業的解決,那當然選擇sql server. 世界上不只是互聯網企業,還有更多的世界500強和傳統企業; 資料庫也不只是數據存儲,還有數據挖掘,商業智能; 世界上不只是開源免費,還有售後服務和技術支持;
功能和性能均有較大優勢
功能方面參考MSDN的技術文檔:SQL Server 2016 Technical Documentation
性能方面參考TPC測試基準:TPC-E - Top Ten Performance Results - Non-Clustered
TPC-H - Top Ten Performance Results - Non-Clustered
不開源 出了問題可以諮詢輪子哥(逃
用mssql的業務和公司,核心技術和業務多半是以架構在關係資料庫上的,採用MySQL的公司,核心業務通常是分散式的,前端會有redis和nosql做緩衝,大數據展現會用bi,MySQL只會用來做最簡單的數據存儲。那麼對比性能的話,單表還好點,三個表及其以上的關聯查詢,MySQL在這種環境下的性能和Oracle和SQLServer比較根本不是一個層次的,並不適合類似企業管理方面的複雜查詢和關聯MySQL的優勢是足夠簡單,易於集群,劣勢也是足夠簡單。
T-SQL很好用啊,很多事情都直接通過資料庫算完了。
多用收費的軟體出問題可以甩鍋,這樣就能保住自己工作不被解僱。如果公司業務出問題,技術上都是你選的開源軟體,別人往軟體上甩鍋就都甩到你那去了...比如我們組長期甩鍋微軟的任何東西,但是似乎微軟依然對我們很好(●°u°●) 」,license還給打折,不像oracle就知道漲價...
SQL server要錢,可以甩鍋?
幫助文檔多,教程多,從安裝過程體驗就覺的SQL Server是個干大活的東西......
不丟數據
這個問題其實很有意思。各種產品大家都會各自的粉絲,很難得到真實的答案。其實關係型資料庫現在都比較接近了,可以自己都了解下,然後再評估。
執行計劃和統計信息
有問題可以找輪子哥@vczh
推薦閱讀:
※請問這個PHP下防範MySQL注入攻擊的方法管用嗎?
※mysql pid文件是什麼用途?
※Mysql佔用CPU過高如何優化?
※為什麼 PostgreSQL 沒有 MySQL 流行呢?
※mysql如何實現四大隔離級別的?
TAG:MySQL | MicrosoftSQLServer |