【數據庫】各種主流 SQLServer 遷移到 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 服務器分別運行在兩臺獨立的虛擬機系統中,而所有的待測試程序都運行在 MySQL 所在的服務器上面。其中:
SQLServer 服務配置:● 操作系統:Windows XP
● 內 存:2GB
● 100MB 電信光纖
MySQL 服務配置:
● 操作系統:Windows XP
● 內 存:1GB
● 100MB 電信光纖
SQLyog 使用的是古老的 ODBC 連接,但對於新一代的程序來說,這種方式的非常的不熟悉並且不容易使用,並且必須要求本機安裝好相應的數據庫的 ODBC 驅動程序(SQL Server 一般自帶好)。
2、Navicat PremiumNavicat Premium 是四個應用工具中設計最不人性化的一個:從上圖怎麽也想像不到要點按那個小按鈕來添加一個新的連接,並且這個連接設置不會保存,每次導入時都必須重新設置。 Navicat Premium 使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。
3、Mss2sql Mss2sql 是最容易在百度上搜索出來的工具,原因之一是它出現的時間較早。Mss2sql 由於是很有針對性的從 SQLServer 遷移到 MySQL,因為界面使用了操作向導設計,使用非常容易。同時在設置的過程中,有非常多的選項進行細節調整,可以感覺到軟件經過了相當長一段時間的使用漸漸完善出來的。
4、DB2DBDB2DB 由於是由國人開發,因此無論是界面還是提示信息,都是全程漢字。另外,由於 DB2DB 在功能上很有針對性,因為界面設計一目了然和易使用。和 mss2sql 一樣, DB2DB 提供了非常多的選項供用戶進行選擇和設置。
三、處理速度和內存占用評測 在本評測前,本人的一位資深同事曾經從網上下載了某款遷移軟件,把一個大約2500萬記錄數的數據表轉送到阿裏雲 MySQL,結果經過了三天三夜(好在其中兩天是星期六和星期日兩個休息日)都未能遷移過來。因此這一次需要對這四個工具的處理速度作一個詳細的測試。 考慮到從 SQL Server 遷移到 MySQL 會出現兩種不同的場景:
● 從 SQL Server 遷移到本地 MySQL 進行代碼測試和修改;
● 從 SQL Server 遷移到雲端 MySQL 數據庫正式上線使用;
工具名稱 | 遷移到本地耗時 | 遷移到雲端耗時 | 最高CPU占用 | 內存占用 |
SQLyog | 2806秒 | 4438秒 | 08% | 20MB |
Navicat Premium | 598秒 | 3166秒 | 52% | 32MB |
Mss2sql | 726秒 | 1915秒 | 30% | 12MB |
DB2DB | 164秒 | 1282秒 | 34% | 40MB |
Navicat Premium 的處理速度屬於中等,不算快也不算慢,但 CPU 占用還有內存占用都處於高位水平。不過以現在的電腦硬件水平來說,還是可以接受。但 CPU 占用率太高,將使得數據在導入的過程中,服務器不能用於其它用途。
3、Mss2sqlMss2sql 並沒有提供計時器,因此我們使用人工計時的方法,整個過程處理完畢大於是 726 秒。Mss2sql 的 CPU 占用率相對其它工具來說較高,但仍屬於可以接受的範圍之內。
4、DB2DBDB2DB 同樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度相當驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。
四、數據完整性評測 把數據準確無誤地從 SQL Server 遷移到 MySQL 應該作為這些工具的一個基本要求,因此這裏我們對四種工具轉換之後的結果進行檢查。 我們通過後臺 SQL 對記錄數進行檢查,發現所有的工具都能把記錄完整地遷移到新的數據庫。如果仔細觀察,可以發現上圖中各個數據庫的大小是不一致的,基本的判斷是由於各種工具在映射數據表字段時,字段長度取值可能不能而引起的。而 mesoftreportcenter2 數據庫大小比起其它數據庫差不多少了一半,這引起了我們的註意。通過分析,我們發現 Navicat Premium 在遷移數據庫時,並不會為該數據庫所有數據表創建索引和主鍵,缺少索引和主鍵的數據庫大小顯然比其它數據庫要少得多。 為了解各工具遷移後的數據庫能否立即應用於生產環境,我們對創建後的數據表進行了更深入的分析,發現各工具對字段默認值的支持程度也不盡相同。其中:● SQLyog:完整支持 SQL Server 的默認值;
● Navicat Premium:完全不支持默認值,所有遷移後的數據表都沒有默認值;
● Mss2sql:支持默認值但有嚴重錯誤;
● DB2DB:完整支持 SQL Server 的默認值。
測試項目 | SQLyog | Navicat Premium | Mss2sql | DB2DB |
表結構 | 支持 | 支持 | 支持 | 支持 |
字段長度 | 支持 | 部分支持(對Money等支持不好) | 支持 | 支持 |
數據 | 完整 | 完整 | 完整 | 完整 |
索引 | 支持 | 不支持 | 支持 | 支持 |
關鍵字 | 支持 | 不支持 | 支持 | 支持 |
默認值 | 支持 | 不支持 | 支持,但有嚴重錯誤 | 支持 |
二進制數據 | 支持 | 支持 | 支持 | 支持 |
工具名 | 價格 | 試用限制 | 其它功能 | 備註 |
SQyog | $199 | 30天試用,並且只允許轉換兩張數據表 | 無 | |
Navicat Premium | $799 | 無 | ||
Mss2sql | $49 | 每張數據表只允許有50秒處理時間 | 支持導出為 SQL | |
DB2DB | ¥199 | 10萬記錄限制 | 支持導出為 SQL |
工具名 | 處理速度 | 數據完整性 | 價格 | 推薦度 |
SQLyog | ★☆☆☆☆ | ★★★★★ | ★★☆☆☆ | ★★☆☆☆ |
Navicat Premium | ★★★☆☆ | ★☆☆☆☆ | ★☆☆☆☆ | ★☆☆☆☆ |
Mss2sql | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ | ★★★☆☆ |
DB2DB | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ |
【數據庫】各種主流 SQLServer 遷移到 MySQL 工具對比