- 最近公司各项服务开始上云, 包含数据库部分, 原来都是买的Oracle, 现在都准备上免费的MySQL….为了节约成本, 当然也需要考虑迁移可行性和差异化问题处理, 简单对比如下:
| Oracle | MySQL |
|---|---|
| 适合大批量数据处理,速度快 | 不适合批处理,不适合大事务 |
| 单库多表海量数据查询 | 不适合超大表,分区功能不完善 |
| 强大的查询优化器和统计信息。自动优化的执行计划,适合多表关联 | 不适合多表关联,不完善的生成基于成本的执行计划,基本可认为使用的是基于rule的执行计划。不支持数据库级别的并行查询 |
| 数据库层面SQL优化手段多,并行,物化视图,append,分区 | 更多的要求是业务逻辑和表设计优化 |
| 堆表,使用rowid 标记物理地址 | 索引化表,必须包含主键 |
| 需要购买, 还不便宜 | 免费 |
| 单实例,扩展不便 | 非常容易online添加新节点,可以任意扩展 |
-
MySQL变慢的一般原因总结:
-
MySQL 需要避免大事务,大表(row的长度).
-
MySQL避免多表关联,多使用简单查询.
-
-
迁移方式:
- kettle工具, 简单了解了下是比较容易操作的, 为了提高迁移性能可部署服务端到高性能服务器;
- Java或者Python脚本迁移.