各類主流 SQLServer 遷移到 MySQL 工具對比

      我之因此會寫這篇對比文章,是由於公司新產品研發真實經歷過這個痛苦過程(傳統基於 SQL Server開發的C/S 產品轉爲 MySQL雲產品)。首次須要數據轉換是測試環節,當時爲了快速驗證新研發雲產品性能與結果準確性(算法類),因此需大量的原始數據,最快的辦法就是使用老產品的真實數據。由於在前期數據轉換時主用於內部驗證,並無花不少心思去處理這個事情,通常數據能導過去,不對的地方本身再手工處理一下就行了。後面對這個轉換工具引發了極大的重視是正式有老客戶升級時,由於正式投入使用就容不得半點錯誤(當時至少有幾百家客戶須要升級新產品),因此數據轉移第一要求是百分百的準確率,其次是速度要快。如今回想起來,當時要有這麼一篇對比文章,那我就不會浪費那麼多時間在查找、對比、驗證工具和數據維護修正上了,因此真心但願經過這篇對比文章能給你們提供一些參考或幫助!下面進入正題:
 
      在部署前期,首要任務就是考慮如何快速把基於 SQL Server 數據庫的應用程序移植到阿里雲的 MySQL 數據庫。因爲程序是基於 O/R mapping 編寫,而且數據庫中沒有使用存儲過程、用戶函數等數據庫功能,所以僅僅須要考慮的是數據庫中的數據如何轉換到新的 MySQL 數據庫中。
 
      經過度娘查找,找到以下四種可使用的工具,而且每一種工具都有大量的用戶,還有很多用戶在自已的博客中寫下了圖文使用經驗,這四種工具分別是: 
      因爲公司須要處理的是業務數據庫,所以必須保證數據轉換的準確率(不容許丟失數據,數據庫字段、索引完整),而且須要保證數據庫遷移後能當即使用。所以在實施數據遷移前,對這幾種 SQLServer 到 MySQL 的遷移工具進行一個全面測試。下面咱們將基於如下需求爲前提進行測試:

● 軟件易用性
● 處理速度和內存佔用
● 數據完整性
● 試用版限制
● 其它功能web

1、測試用的源數據庫和系統
 
      用於測試的源數據庫名爲 MesoftReportCenter。因爲其中一個測試工具試用版限制只能處理兩張數據表的緣由,所以咱們只選取了記錄數最多的兩張數據表:HISOPChargeIntermediateResult 和 HISOPChargeItemIntermediateResult。兩張數據表合計的記錄數約爲 328萬,數據庫不算大,但針對本次進行測試也基本上足夠了。
 
 

      SQLServer 服務器和 MySQL 服務器分別運行在兩臺獨立的虛擬機系統中,而全部的待測試程序都運行在 MySQL 所在的服務器上面。其中:算法

      SQLServer 服務配置:

● 操做系統:Windows XP
● 內  存:2GB
● 100MB 電信光纖sql

      MySQL 服務配置:數據庫

● 操做系統:Windows XP
● 內  存:1GB
● 100MB 電信光纖服務器

      同時爲了測試的公平性,除 Mss2SQL 外,全部軟件都是直接從官網下載最新的版本。 Mss2SQL 因爲試用版的限制緣由沒有參與測試,而使用了網上惟一能找到的 5.3 破解版進行測試。
 
2、軟件易用性評測
 
      軟件易用性主要是指軟件在導入前的配置是否容易。因爲不少軟件設計是面向程序員而非通常的數據庫管理人員、甚至是普通的應用程序實施人員,而這一類人員不少時候並無數據源配置經驗。由於一些使用 ODBC 或者 ADO 進行配置的程序每每會讓這類用戶形成困擾(主要是不知道應該選擇什麼類型的數據庫驅動程序)。下面讓咱們看看四個工具的設計界面:
 
1、SQLyog
 

      SQLyog 使用的是古老的 ODBC 鏈接,但對於新一代的程序來講,這種方式的很是的不熟悉而且不容易使用,而且必需要求本機安裝好相應的數據庫的 ODBC 驅動程序(SQL Server 通常自帶好)。app

 
2、Navicat Premium

      Navicat Premium 是四個應用工具中設計最不人性化的一個:從上圖怎麼也想像不到要點按那個小按鈕來添加一個新的鏈接,而且這個鏈接設置不會保存,每次導入時都必須從新設置。 Navicat Premium 使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。函數

3、Mss2sql
 
      Mss2sql 是最容易在百度上搜索出來的工具,緣由之一是它出現的時間較早。
 

      Mss2sql 因爲是頗有針對性的從 SQLServer 遷移到 MySQL,由於界面使用了操做嚮導設計,使用很是容易。同時在設置的過程當中,有很是多的選項進行細節調整,能夠感受到軟件通過了至關長一段時間的使用漸漸完善出來的。工具

4、DB2DB
 

      DB2DB 因爲是由國人開發,所以不管是界面仍是提示信息,都是全程漢字。另外,因爲 DB2DB 在功能上頗有針對性,由於界面設計一目瞭然和易使用。和 mss2sql 同樣, DB2DB 提供了很是多的選項供用戶進行選擇和設置。性能

 

3、處理速度和內存佔用評測
 
      在本評測前,本人的一位資深同事曾經從網上下載了某款遷移軟件,把一個大約2500萬記錄數的數據錶轉送到阿里雲 MySQL,結果通過了三天三夜(好在其中兩天是星期六和星期日兩個休息日)都未能遷移過來。所以這一次須要對這四個工具的處理速度做一個詳細的測試。
 
      考慮到從 SQL Server 遷移到 MySQL 會出現兩種不一樣的場景:

● 從 SQL Server 遷移到本地 MySQL 進行代碼測試和修改;
● 從 SQL Server 遷移到雲端 MySQL 數據庫正式上線使用;

 
      所以咱們的測試也會針對這兩個場景分別進行評測,測試結果以下(記錄數約爲 328萬):
工具名稱 遷移到本地耗時 遷移到雲端耗時 最高CPU佔用 內存佔用
SQLyog 2806秒 4438秒 08% 20MB
Navicat Premium 598秒 3166秒 52% 32MB
Mss2sql 726秒 1915秒 30% 12MB
DB2DB 164秒 1282秒 34% 40MB
注:紅色字體標識爲勝出者。
 
如下爲測試過程當中的截圖:
1、SQLyog

 
2、Navicat Premium
 

注意: 咱們在測試 Navicat Premium 遷移到  MySQL 時發現,對於 SQL Server 的 Money 類型支持很差(不排除還有其它的數據類型支持很差)。Money 類型字段默認的小數位長度爲 255,使得沒法建立數據表致使整個測試沒法成功,須要咱們逐張表進行表結構修改才能完成測試過程。
 

      Navicat Premium 的處理速度屬於中等,不算快也不算慢,但 CPU 佔用還有內存佔用都處於高位水平。不過以如今的電腦硬件水平來講,仍是能夠接受。但 CPU 佔用率過高,將使得數據在導入的過程當中,服務器不能用於其它用途。

 
3、Mss2sql

Mss2sql 並無提供計時器,所以咱們使用人工計時的方法,整個過程處理完畢大因而 726 秒。Mss2sql 的 CPU 佔用率相對其它工具來講較高,但仍屬於能夠接受的範圍以內。

 
4、DB2DB
 

DB2DB 一樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度至關驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,咱們驗證了數據實際上是已經所有處理完畢了)。

 
4、數據完整性評測
 
      把數據準確無誤地從 SQL Server 遷移到 MySQL 應該做爲這些工具的一個基本要求,所以這裏咱們對四種工具轉換以後的結果進行檢查。
      咱們經過後臺 SQL 對記錄數進行檢查,發現全部的工具都能把記錄完整地遷移到新的數據庫。若是仔細觀察,能夠發現上圖中各個數據庫的大小是不一致的,基本的判斷是因爲各類工具在映射數據表字段時,字段長度取值可能不能而引發的。而 mesoftreportcenter2 數據庫大小比起其它數據庫差很少少了一半,這引發了咱們的注意。經過分析, 咱們發現  Navicat Premium 在遷移數據庫時,並不會爲該數據庫全部數據表建立索引和主鍵,缺乏索引和主鍵的數據庫大小顯然比其它數據庫要少得多。
 
      爲了解各工具遷移後的數據庫可否當即應用於生產環境,咱們對建立後的數據表進行了更深刻的分析,發現各工具對字段默認值的支持程度也不盡相同。其中: 

● SQLyog:完整支持 SQL Server 的默認值;
● Navicat Premium:徹底不支持默認值,全部遷移後的數據表都沒有默認值;
● Mss2sql:支持默認值但有嚴重錯誤;
● DB2DB:完整支持 SQL Server 的默認值。

      Mss2sql 的默認值有一個嚴重的錯誤,在 SQL Server 中字段默認值爲空字符串 '',但遷移以後變成兩個 '' 符號。 Mss2sql 這個嚴重的錯誤會使得程序在正式環境運行後,數據庫會產生錯誤的數據!
 
      在一些老舊的系統中,數據庫還會存在 Text、二進制類型的字段數據,經過測試對比後,四種工具都完美支持 Text 和 二進制(Image)類型字段。
 
小結:
測試項目 SQLyog Navicat Premium Mss2sql DB2DB
表結構 支持 支持 支持 支持
字段長度 支持 部分支持(對Money等支持很差) 支持 支持
數據 完整 完整 完整 完整
索引 支持 不支持 支持 支持
關鍵字 支持 不支持 支持 支持
默認值 支持 不支持 支持,但有嚴重錯誤 支持
二進制數據 支持 支持 支持 支持
 
5、各工具其它功能及試用版限制
 
      估計因爲數據庫同步會存在一些技術難題的緣由,4 款工具目前都是隻是提供試用版本,最後咱們來看看四個工具的試用版本各自的限制是什麼:
工具名 價格 試用限制 其它功能 備註
SQyog $199 30天試用,而且只容許轉換兩張數據表  
Navicat Premium $799    
Mss2sql $49 每張數據表只容許有50秒處理時間 支持導出爲 SQL  
DB2DB ¥199 10萬記錄限制 支持導出爲 SQL  
 
      四種工具中,因爲 SQLyog 和 Navicat Premium 提供了額外的管理功能,因此價格相比其它兩款工具的要高得多。特別是 Navicat,必須是 Premium 版本才提供數據轉換的功能。而 Mss2sql 最新版本的試用版只提供了 50 秒處理時間,由於實用價值不大。而筆者與 DB2DB 做者聯繫時得知,DB2DB 設置 10萬記錄限制,主要是考慮國內不少小型軟件記錄數都是少於 10 萬筆,而這一類人羣通常都是小型創業團隊。
 
6、評測總結
 
      最後,對四款軟件的測試結果做一個總體的總結:
工具名 處理速度 數據完整性 價格 推薦度
SQLyog ★☆☆☆☆ ★★★★★ ★★☆☆☆ ★★☆☆☆
Navicat Premium ★★★☆☆ ★☆☆☆☆ ★☆☆☆☆ ★☆☆☆☆
Mss2sql ★★☆☆☆ ★★★☆☆ ★★★★☆ ★★★☆☆
DB2DB ★★★★★ ★★★★★ ★★★★★ ★★★★★
 
      以上四款軟件中,最不推薦使用的是 Navicat Premium,主要緣由是數據的完整性表現較差,轉換後的數據不能當即用於生產環境,須要程序員仔細自行查找緣由和分析。而 SQLyog 有較好的數據完整性,但總體處理速度很是的慢,若是數據較大的狀況下,須要浪費很是多寶貴的時間。比較推薦的是 DB2DB,軟件總體表現較好,對我來講最重要的是在不購買的狀況下也夠用了,並且全中文的傻瓜式界面操做起來實在方便。
相關文章
相關標籤/搜索