在部署前期,首要任务就是考虑如何快速把基于 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)
● 软件易用性
● 处理速度和内存占用
● 数据完整性
● 试用版限制
● 其它功能
![](https://i-blog.csdnimg.cn/blog_migrate/542bffa94beed4858dcbd859dea0189a.png)
SQLServer 服务器和 MySQL 服务器分别运行在两台独立的虚拟机系统中,而所有的待测试程序都运行在 MySQL 所在的服务器上面。其中:
● 操作系统:Windows XP
● 内 存:2GB
● 100MB 电信光纤
MySQL 服务配置:
● 操作系统:Windows XP
● 内 存:1GB
● 100MB 电信光纤
![](https://i-blog.csdnimg.cn/blog_migrate/d93a9976ed89a593f9ba744870a0b37c.png)
SQLyog 使用的是古老的 ODBC 连接,但对于新一代的程序来说,这种方式的非常的不熟悉并且不容易使用,并且必须要求本机安装好相应的数据库的 ODBC 驱动程序(SQL Server 一般自带好)。
![](https://i-blog.csdnimg.cn/blog_migrate/eb4581fcf83c0ee7cecfeab2a562f2e1.png)
Navicat Premium 是四个应用工具中设计最不人性化的一个:从上图怎么也想像不到要点按那个小按钮来添加一个新的连接,并且这个连接设置不会保存,每次导入时都必须重新设置。 Navicat Premium 使用的是比 ODBC 稍先进的 ADO 设置方式(199X年代的产物),但使用上依然是针对老一代的程序员。
![](https://i-blog.csdnimg.cn/blog_migrate/d3a55f9d802a01cebf530719409f15b3.png)
Mss2sql 由于是很有针对性的从 SQLServer 迁移到 MySQL,因为界面使用了操作向导设计,使用非常容易。同时在设置的过程中,有非常多的选项进行细节调整,可以感觉到软件经过了相当长一段时间的使用渐渐完善出来的。
![](https://i-blog.csdnimg.cn/blog_migrate/ecced579a209ecda3b6c7ab8212cb03b.png)
DB2DB 由于是由国人开发,因此无论是界面还是提示信息,都是全程汉字。另外,由于 DB2DB 在功能上很有针对性,因为界面设计一目了然和易使用。和 mss2sql 一样, DB2DB 提供了非常多的选项供用户进行选择和设置。
● 从 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 |
![](https://i-blog.csdnimg.cn/blog_migrate/c95974b76800e8895f38b7231dd2fe90.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a4fabf6d60fdd335549d5901a306c772.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8006fe4e8e3ceab7e362af2b509a1851.png)
Navicat Premium 的处理速度属于中等,不算快也不算慢,但 CPU 占用还有内存占用都处于高位水平。不过以现在的电脑硬件水平来说,还是可以接受。但 CPU 占用率太高,将使得数据在导入的过程中,服务器不能用于其它用途。
![](https://i-blog.csdnimg.cn/blog_migrate/9a52d4a81a24f12a07c774115ef621f8.png)
Mss2sql 并没有提供计时器,因此我们使用人工计时的方法,整个过程处理完毕大于是 726 秒。Mss2sql 的 CPU 占用率相对其它工具来说较高,但仍属于可以接受的范围之内。
![](https://i-blog.csdnimg.cn/blog_migrate/31ce5e8ce7d33e8fc73938fbd78dbffa.png)
DB2DB 同样迁移 300万数据时,仅仅使用了 2 分 44 秒,这个速度相当惊人。不过最后的结果出现一个 BUG,就是提示了转换成功,但后面的进度条却没有走完(在后面的数据完整性评测中,我们验证了数据其实是已经全部处理完毕了)。
![](https://i-blog.csdnimg.cn/blog_migrate/8b9c3099af25fe5bfaa5acee0792db6c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f15e5082a7688ec8ce8ef3c86578651.png)
● SQLyog:完整支持 SQL Server 的默认值;
● Navicat Premium:完全不支持默认值,所有迁移后的数据表都没有默认值;
● Mss2sql:支持默认值但有严重错误;
● DB2DB:完整支持 SQL Server 的默认值。
![](https://i-blog.csdnimg.cn/blog_migrate/25262d5e70a10a3f9ba424864d6431bc.png)
测试项目 | 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 | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ |