程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 各種主流 SQLServer 遷移到 MySQL 工具對比,sqlservermysql

各種主流 SQLServer 遷移到 MySQL 工具對比,sqlservermysql

編輯:MySQL綜合教程

各種主流 SQLServer 遷移到 MySQL 工具對比,sqlservermysql


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

● SQLyog(https://www.webyog.com/product/sqlyog)
● Navicat Premium(https://www.navicat.com/products/navicat-premium)
● Mss2sql(http://www.convert-in.com/)
● DB2DB(http://www.szmesoft.com/DB2DB) 

      由於公司需要處理的是業務數據庫,因此必須保證數據轉換的准確率(不允許丟失數據,數據庫字段、索引完整),並且需要保證數據庫遷移後能立即使用。因此在實施數據遷移前,對這幾種 SQLServer 到 MySQL 的遷移工具進行一個全面測試。下面我們將基於以下需求為前提進行測試:

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

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

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

      SQLServer 服務配置:

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

      MySQL 服務配置:

● 操作系統:Windows XP
● 內  存:1GB
● 100MB 電信光纖

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

      2、Navicat Premium

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

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

      Mss2sql 由於是很有針對性的從 SQLServer 遷移到 MySQL,因為界面使用了操作向導設計,使用非常容易。同時在設置的過程中,有非常多的選項進行細節調整,可以感覺到軟件經過了相當長一段時間的使用漸漸完善出來的。

4、DB2DB  

      DB2DB 由於是由國人開發,因此無論是界面還是提示信息,都是全程漢字。另外,由於 DB2DB 在功能上很有針對性,因為界面設計一目了然和易使用。和 mss2sql 一樣, DB2DB 提供了非常多的選項供用戶進行選擇和設置。

 

三、處理速度和內存占用評測         在本評測前,本人的一位資深同事曾經從網上下載了某款遷移軟件,把一個大約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,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。

  四、數據完整性評測         把數據准確無誤地從 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等支持不好) 支持 支持 數據 完整 完整 完整 完整 索引 支持 不支持 支持 支持 關鍵字 支持 不支持 支持 支持 默認值 支持 不支持 支持,但有嚴重錯誤 支持 二進制數據 支持 支持 支持 支持   五、各工具其它功能及試用版限制         估計由於數據庫同步會存在一些技術難題的原因,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 萬筆,而這一類人群一般都是小型創業團隊。   六、評測總結         最後,對四款軟件的測試結果作一個整體的總結: 工具名 處理速度 數據完整性 價格 推薦度 SQLyog ★☆☆☆☆ ★★★★★ ★★☆☆☆ ★★☆☆☆ Navicat Premium ★★★☆☆ ★☆☆☆☆ ★☆☆☆☆ ★☆☆☆☆ Mss2sql ★★☆☆☆ ★★★☆☆ ★★★★☆ ★★★☆☆ DB2DB ★★★★★ ★★★★★ ★★★★★ ★★★★★         以上四款軟件中,最不推薦使用的是 Navicat Premium,主要原因是數據的完整性表現較差,轉換後的數據不能立即用於生產環境,需要程序員仔細自行查找原因和分析。而 SQLyog 有較好的數據完整性,但整體處理速度非常的慢,如果數據較大的情況下,需要浪費非常多寶貴的時間。比較推薦的是 DB2DB,軟件整體表現較好,對我來說最重要的是在不購買的情況下也夠用了,而且全中文的傻瓜式界面操作起來實在方便。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved